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
|
@@ -16,14 +16,12 @@ import { asArray, compareBy, numberComparator } from '../../../../base/common/ar
|
|
|
16
16
|
import { CancellationTokenSource } from '../../../../base/common/cancellation.js';
|
|
17
17
|
import { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';
|
|
18
18
|
import { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';
|
|
19
|
-
import {
|
|
19
|
+
import { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
|
|
20
20
|
import { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';
|
|
21
21
|
import { Range } from '../../../common/core/range.js';
|
|
22
|
-
import { ILanguageService } from '../../../common/languages/language.js';
|
|
23
22
|
import { RenderedHoverParts } from './hoverTypes.js';
|
|
24
23
|
import * as nls from '../../../../nls.js';
|
|
25
24
|
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
|
|
26
|
-
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
|
|
27
25
|
import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';
|
|
28
26
|
import { HoverVerbosityAction } from '../../../common/languages.js';
|
|
29
27
|
import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
|
|
@@ -70,10 +68,9 @@ class HoverSource {
|
|
|
70
68
|
}
|
|
71
69
|
}
|
|
72
70
|
let MarkdownHoverParticipant = class MarkdownHoverParticipant {
|
|
73
|
-
constructor(_editor,
|
|
71
|
+
constructor(_editor, _markdownRendererService, _configurationService, _languageFeaturesService, _keybindingService, _hoverService, _commandService) {
|
|
74
72
|
this._editor = _editor;
|
|
75
|
-
this.
|
|
76
|
-
this._openerService = _openerService;
|
|
73
|
+
this._markdownRendererService = _markdownRendererService;
|
|
77
74
|
this._configurationService = _configurationService;
|
|
78
75
|
this._languageFeaturesService = _languageFeaturesService;
|
|
79
76
|
this._keybindingService = _keybindingService;
|
|
@@ -150,7 +147,7 @@ let MarkdownHoverParticipant = class MarkdownHoverParticipant {
|
|
|
150
147
|
}
|
|
151
148
|
}
|
|
152
149
|
renderHoverParts(context, hoverParts) {
|
|
153
|
-
this._renderedHoverParts = new MarkdownRenderedHoverParts(hoverParts, context.fragment, this, this._editor, this.
|
|
150
|
+
this._renderedHoverParts = new MarkdownRenderedHoverParts(hoverParts, context.fragment, this, this._editor, this._commandService, this._keybindingService, this._hoverService, this._configurationService, this._markdownRendererService, context.onContentsChanged);
|
|
154
151
|
return this._renderedHoverParts;
|
|
155
152
|
}
|
|
156
153
|
handleScroll(e) {
|
|
@@ -161,13 +158,12 @@ let MarkdownHoverParticipant = class MarkdownHoverParticipant {
|
|
|
161
158
|
}
|
|
162
159
|
};
|
|
163
160
|
MarkdownHoverParticipant = __decorate([
|
|
164
|
-
__param(1,
|
|
165
|
-
__param(2,
|
|
166
|
-
__param(3,
|
|
167
|
-
__param(4,
|
|
168
|
-
__param(5,
|
|
169
|
-
__param(6,
|
|
170
|
-
__param(7, ICommandService)
|
|
161
|
+
__param(1, IMarkdownRendererService),
|
|
162
|
+
__param(2, IConfigurationService),
|
|
163
|
+
__param(3, ILanguageFeaturesService),
|
|
164
|
+
__param(4, IKeybindingService),
|
|
165
|
+
__param(5, IHoverService),
|
|
166
|
+
__param(6, ICommandService)
|
|
171
167
|
], MarkdownHoverParticipant);
|
|
172
168
|
export { MarkdownHoverParticipant };
|
|
173
169
|
class RenderedMarkdownHoverPart {
|
|
@@ -182,15 +178,14 @@ class RenderedMarkdownHoverPart {
|
|
|
182
178
|
}
|
|
183
179
|
}
|
|
184
180
|
class MarkdownRenderedHoverParts {
|
|
185
|
-
constructor(hoverParts, hoverPartsContainer, _hoverParticipant, _editor,
|
|
181
|
+
constructor(hoverParts, hoverPartsContainer, _hoverParticipant, _editor, _commandService, _keybindingService, _hoverService, _configurationService, _markdownRendererService, _onFinishedRendering) {
|
|
186
182
|
this._hoverParticipant = _hoverParticipant;
|
|
187
183
|
this._editor = _editor;
|
|
188
|
-
this._languageService = _languageService;
|
|
189
|
-
this._openerService = _openerService;
|
|
190
184
|
this._commandService = _commandService;
|
|
191
185
|
this._keybindingService = _keybindingService;
|
|
192
186
|
this._hoverService = _hoverService;
|
|
193
187
|
this._configurationService = _configurationService;
|
|
188
|
+
this._markdownRendererService = _markdownRendererService;
|
|
194
189
|
this._onFinishedRendering = _onFinishedRendering;
|
|
195
190
|
this._ongoingHoverOperations = new Map();
|
|
196
191
|
this._disposables = new DisposableStore();
|
|
@@ -235,7 +230,7 @@ class MarkdownRenderedHoverParts {
|
|
|
235
230
|
return new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables, actionsContainerInner);
|
|
236
231
|
}
|
|
237
232
|
_renderMarkdownHover(markdownHover, onFinishedRendering) {
|
|
238
|
-
const renderedMarkdownHover = renderMarkdown(this._editor, markdownHover, this.
|
|
233
|
+
const renderedMarkdownHover = renderMarkdown(this._editor, markdownHover, this._markdownRendererService, onFinishedRendering);
|
|
239
234
|
return renderedMarkdownHover;
|
|
240
235
|
}
|
|
241
236
|
_renderHoverExpansionAction(container, action, actionEnabled) {
|
|
@@ -348,18 +343,18 @@ class MarkdownRenderedHoverParts {
|
|
|
348
343
|
this._disposables.dispose();
|
|
349
344
|
}
|
|
350
345
|
}
|
|
351
|
-
export function renderMarkdownHovers(context, markdownHovers, editor,
|
|
346
|
+
export function renderMarkdownHovers(context, markdownHovers, editor, markdownRendererService) {
|
|
352
347
|
// Sort hover parts to keep them stable since they might come in async, out-of-order
|
|
353
348
|
markdownHovers.sort(compareBy(hover => hover.ordinal, numberComparator));
|
|
354
349
|
const renderedHoverParts = [];
|
|
355
350
|
for (const markdownHover of markdownHovers) {
|
|
356
|
-
const renderedHoverPart = renderMarkdown(editor, markdownHover,
|
|
351
|
+
const renderedHoverPart = renderMarkdown(editor, markdownHover, markdownRendererService, context.onContentsChanged);
|
|
357
352
|
context.fragment.appendChild(renderedHoverPart.hoverElement);
|
|
358
353
|
renderedHoverParts.push(renderedHoverPart);
|
|
359
354
|
}
|
|
360
355
|
return new RenderedHoverParts(renderedHoverParts);
|
|
361
356
|
}
|
|
362
|
-
function renderMarkdown(editor, markdownHover,
|
|
357
|
+
function renderMarkdown(editor, markdownHover, markdownRendererService, onFinishedRendering) {
|
|
363
358
|
const disposables = new DisposableStore();
|
|
364
359
|
const renderedMarkdown = $('div.hover-row');
|
|
365
360
|
const renderedMarkdownContents = $('div.hover-row-contents');
|
|
@@ -371,8 +366,8 @@ function renderMarkdown(editor, markdownHover, languageService, openerService, o
|
|
|
371
366
|
}
|
|
372
367
|
const markdownHoverElement = $('div.markdown-hover');
|
|
373
368
|
const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));
|
|
374
|
-
const
|
|
375
|
-
|
|
369
|
+
const renderedContents = disposables.add(markdownRendererService.render(markdownString, {
|
|
370
|
+
editor,
|
|
376
371
|
asyncRenderCallback: () => {
|
|
377
372
|
hoverContentsElement.className = 'hover-contents code-hover-contents';
|
|
378
373
|
onFinishedRendering();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/hover/browser/markdownHoverParticipant.ts"],"names":[],"mappings":"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","file":"markdownHoverParticipant.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 { asArray, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { MarkdownRenderer } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelDecoration, ITextModel } from '../../../common/model.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { HoverAnchor, HoverAnchorType, HoverRangeAnchor, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from './hoverTypes.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Hover, HoverContext, HoverProvider, HoverVerbosityAction } from '../../../common/languages.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ClickAction, HoverPosition, KeyDownAction } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IHoverService, WorkbenchHoverDelegate } from '../../../../platform/hover/browser/hover.js';\nimport { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { getHoverProviderResultsAsAsyncIterable } from './getHover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from './hoverOperation.js';\nimport { ScrollEvent } from '../../../../base/common/scrollable.js';\n\nconst $ = dom.$;\nconst increaseHoverVerbosityIcon = registerIcon('hover-increase-verbosity', Codicon.add, nls.localize('increaseHoverVerbosity', 'Icon for increaseing hover verbosity.'));\nconst decreaseHoverVerbosityIcon = registerIcon('hover-decrease-verbosity', Codicon.remove, nls.localize('decreaseHoverVerbosity', 'Icon for decreasing hover verbosity.'));\n\nexport class MarkdownHover implements IHoverPart {\n\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<MarkdownHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly contents: IMarkdownString[],\n\t\tpublic readonly isBeforeContent: boolean,\n\t\tpublic readonly ordinal: number,\n\t\tpublic readonly source: HoverSource | undefined = undefined,\n\t) { }\n\n\tpublic isValidForHoverAnchor(anchor: HoverAnchor): boolean {\n\t\treturn (\n\t\t\tanchor.type === HoverAnchorType.Range\n\t\t\t&& this.range.startColumn <= anchor.range.startColumn\n\t\t\t&& this.range.endColumn >= anchor.range.endColumn\n\t\t);\n\t}\n}\n\nclass HoverSource {\n\n\tconstructor(\n\t\treadonly hover: Hover,\n\t\treadonly hoverProvider: HoverProvider,\n\t\treadonly hoverPosition: Position,\n\t) { }\n\n\tpublic supportsVerbosityAction(hoverVerbosityAction: HoverVerbosityAction): boolean {\n\t\tswitch (hoverVerbosityAction) {\n\t\t\tcase HoverVerbosityAction.Increase:\n\t\t\t\treturn this.hover.canIncreaseVerbosity ?? false;\n\t\t\tcase HoverVerbosityAction.Decrease:\n\t\t\t\treturn this.hover.canDecreaseVerbosity ?? false;\n\t\t}\n\t}\n}\n\nexport class MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic readonly hoverOrdinal: number = 3;\n\n\tprivate _renderedHoverParts: MarkdownRenderedHoverParts | undefined;\n\n\tconstructor(\n\t\tprotected readonly _editor: ICodeEditor,\n\t\t@ILanguageService private readonly _languageService: ILanguageService,\n\t\t@IOpenerService private readonly _openerService: IOpenerService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService protected readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t) { }\n\n\tpublic createLoadingMessage(anchor: HoverAnchor): MarkdownHover | null {\n\t\treturn new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))], false, 2000);\n\t}\n\n\tpublic computeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): MarkdownHover[] {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst lineNumber = anchor.range.startLineNumber;\n\t\tconst maxColumn = model.getLineMaxColumn(lineNumber);\n\t\tconst result: MarkdownHover[] = [];\n\n\t\tlet index = 1000;\n\n\t\tconst lineLength = model.getLineLength(lineNumber);\n\t\tconst languageId = model.getLanguageIdAtPosition(anchor.range.startLineNumber, anchor.range.startColumn);\n\t\tconst stopRenderingLineAfter = this._editor.getOption(EditorOption.stopRenderingLineAfter);\n\t\tconst maxTokenizationLineLength = this._configurationService.getValue<number>('editor.maxTokenizationLineLength', {\n\t\t\toverrideIdentifier: languageId\n\t\t});\n\t\tlet stopRenderingMessage = false;\n\t\tif (stopRenderingLineAfter >= 0 && lineLength > stopRenderingLineAfter && anchor.range.startColumn >= stopRenderingLineAfter) {\n\t\t\tstopRenderingMessage = true;\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('stopped rendering', \"Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.\")\n\t\t\t}], false, index++));\n\t\t}\n\t\tif (!stopRenderingMessage && typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\n\t\t\t}], false, index++));\n\t\t}\n\n\t\tlet isBeforeContent = false;\n\n\t\tfor (const d of lineDecorations) {\n\t\t\tconst startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n\t\t\tconst endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n\n\t\t\tconst hoverMessage = d.options.hoverMessage;\n\t\t\tif (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (d.options.beforeContentClassName) {\n\t\t\t\tisBeforeContent = true;\n\t\t\t}\n\n\t\t\tconst range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n\t\t\tresult.push(new MarkdownHover(this, range, asArray(hoverMessage), isBeforeContent, index++));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic computeAsync(anchor: HoverAnchor, lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\n\t\tconst hoverProviderRegistry = this._languageFeaturesService.hoverProvider;\n\t\tif (!hoverProviderRegistry.has(model)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\t\treturn this._getMarkdownHovers(hoverProviderRegistry, model, anchor, token);\n\t}\n\n\tprivate async *_getMarkdownHovers(hoverProviderRegistry: LanguageFeatureRegistry<HoverProvider>, model: ITextModel, anchor: HoverRangeAnchor, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tconst position = anchor.range.getStartPosition();\n\t\tconst hoverProviderResults = getHoverProviderResultsAsAsyncIterable(hoverProviderRegistry, model, position, token);\n\n\t\tfor await (const item of hoverProviderResults) {\n\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\tconst range = item.hover.range ? Range.lift(item.hover.range) : anchor.range;\n\t\t\t\tconst hoverSource = new HoverSource(item.hover, item.provider, position);\n\t\t\t\tyield new MarkdownHover(this, range, item.hover.contents, false, item.ordinal, hoverSource);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic renderHoverParts(context: IEditorHoverRenderContext, hoverParts: MarkdownHover[]): IRenderedHoverParts<MarkdownHover> {\n\t\tthis._renderedHoverParts = new MarkdownRenderedHoverParts(\n\t\t\thoverParts,\n\t\t\tcontext.fragment,\n\t\t\tthis,\n\t\t\tthis._editor,\n\t\t\tthis._languageService,\n\t\t\tthis._openerService,\n\t\t\tthis._commandService,\n\t\t\tthis._keybindingService,\n\t\t\tthis._hoverService,\n\t\t\tthis._configurationService,\n\t\t\tcontext.onContentsChanged\n\t\t);\n\t\treturn this._renderedHoverParts;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis._renderedHoverParts?.handleScroll(e);\n\t}\n\n\tpublic updateMarkdownHoverVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\treturn Promise.resolve(this._renderedHoverParts?.updateMarkdownHoverPartVerbosityLevel(action, index));\n\t}\n}\n\nclass RenderedMarkdownHoverPart implements IRenderedHoverPart<MarkdownHover> {\n\n\tconstructor(\n\t\tpublic readonly hoverPart: MarkdownHover,\n\t\tpublic readonly hoverElement: HTMLElement,\n\t\tpublic readonly disposables: DisposableStore,\n\t\tpublic readonly actionsContainer?: HTMLElement\n\t) { }\n\n\tdispose(): void {\n\t\tthis.disposables.dispose();\n\t}\n}\n\nclass MarkdownRenderedHoverParts implements IRenderedHoverParts<MarkdownHover> {\n\n\tpublic renderedHoverParts: RenderedMarkdownHoverPart[];\n\n\tprivate _ongoingHoverOperations: Map<HoverProvider, { verbosityDelta: number; tokenSource: CancellationTokenSource }> = new Map();\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tprivate readonly _hoverParticipant: MarkdownHoverParticipant,\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _languageService: ILanguageService,\n\t\tprivate readonly _openerService: IOpenerService,\n\t\tprivate readonly _commandService: ICommandService,\n\t\tprivate readonly _keybindingService: IKeybindingService,\n\t\tprivate readonly _hoverService: IHoverService,\n\t\tprivate readonly _configurationService: IConfigurationService,\n\t\tprivate readonly _onFinishedRendering: () => void,\n\t) {\n\t\tthis.renderedHoverParts = this._renderHoverParts(hoverParts, hoverPartsContainer, this._onFinishedRendering);\n\t\tthis._disposables.add(toDisposable(() => {\n\t\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\t\trenderedHoverPart.dispose();\n\t\t\t});\n\t\t\tthis._ongoingHoverOperations.forEach(operation => {\n\t\t\t\toperation.tokenSource.dispose(true);\n\t\t\t});\n\t\t}));\n\t}\n\n\tprivate _renderHoverParts(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tonFinishedRendering: () => void,\n\t): RenderedMarkdownHoverPart[] {\n\t\thoverParts.sort(compareBy(hover => hover.ordinal, numberComparator));\n\t\treturn hoverParts.map(hoverPart => {\n\t\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, onFinishedRendering);\n\t\t\thoverPartsContainer.appendChild(renderedHoverPart.hoverElement);\n\t\t\treturn renderedHoverPart;\n\t\t});\n\t}\n\n\tprivate _renderHoverPart(\n\t\thoverPart: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): RenderedMarkdownHoverPart {\n\n\t\tconst renderedMarkdownPart = this._renderMarkdownHover(hoverPart, onFinishedRendering);\n\t\tconst renderedMarkdownElement = renderedMarkdownPart.hoverElement;\n\t\tconst hoverSource = hoverPart.source;\n\t\tconst disposables = new DisposableStore();\n\t\tdisposables.add(renderedMarkdownPart);\n\n\t\tif (!hoverSource) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst canIncreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Increase);\n\t\tconst canDecreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Decrease);\n\n\t\tif (!canIncreaseVerbosity && !canDecreaseVerbosity) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst actionsContainer = $('div.verbosity-actions');\n\t\trenderedMarkdownElement.prepend(actionsContainer);\n\t\tconst actionsContainerInner = $('div.verbosity-actions-inner');\n\t\tactionsContainer.append(actionsContainerInner);\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Increase, canIncreaseVerbosity));\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Decrease, canDecreaseVerbosity));\n\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables, actionsContainerInner);\n\t}\n\n\tprivate _renderMarkdownHover(\n\t\tmarkdownHover: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): IRenderedHoverPart<MarkdownHover> {\n\t\tconst renderedMarkdownHover = renderMarkdown(\n\t\t\tthis._editor,\n\t\t\tmarkdownHover,\n\t\t\tthis._languageService,\n\t\t\tthis._openerService,\n\t\t\tonFinishedRendering,\n\t\t);\n\t\treturn renderedMarkdownHover;\n\t}\n\n\tprivate _renderHoverExpansionAction(container: HTMLElement, action: HoverVerbosityAction, actionEnabled: boolean): DisposableStore {\n\t\tconst store = new DisposableStore();\n\t\tconst isActionIncrease = action === HoverVerbosityAction.Increase;\n\t\tconst actionElement = dom.append(container, $(ThemeIcon.asCSSSelector(isActionIncrease ? increaseHoverVerbosityIcon : decreaseHoverVerbosityIcon)));\n\t\tactionElement.tabIndex = 0;\n\t\tconst hoverDelegate = new WorkbenchHoverDelegate('mouse', undefined, { target: container, position: { hoverPosition: HoverPosition.LEFT } }, this._configurationService, this._hoverService);\n\t\tstore.add(this._hoverService.setupManagedHover(hoverDelegate, actionElement, labelForHoverVerbosityAction(this._keybindingService, action)));\n\t\tif (!actionEnabled) {\n\t\t\tactionElement.classList.add('disabled');\n\t\t\treturn store;\n\t\t}\n\t\tactionElement.classList.add('enabled');\n\t\tconst actionFunction = () => this._commandService.executeCommand(action === HoverVerbosityAction.Increase ? INCREASE_HOVER_VERBOSITY_ACTION_ID : DECREASE_HOVER_VERBOSITY_ACTION_ID, { focus: true });\n\t\tstore.add(new ClickAction(actionElement, actionFunction));\n\t\tstore.add(new KeyDownAction(actionElement, actionFunction, [KeyCode.Enter, KeyCode.Space]));\n\t\treturn store;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\tconst actionsContainerInner = renderedHoverPart.actionsContainer;\n\t\t\tif (!actionsContainerInner) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst hoverElement = renderedHoverPart.hoverElement;\n\t\t\tconst topOfHoverScrollPosition = e.scrollTop;\n\t\t\tconst bottomOfHoverScrollPosition = topOfHoverScrollPosition + e.height;\n\t\t\tconst topOfRenderedPart = hoverElement.offsetTop;\n\t\t\tconst hoverElementHeight = hoverElement.clientHeight;\n\t\t\tconst bottomOfRenderedPart = topOfRenderedPart + hoverElementHeight;\n\t\t\tconst iconsHeight = 22;\n\t\t\tlet top: number;\n\t\t\tif (bottomOfRenderedPart <= bottomOfHoverScrollPosition || topOfRenderedPart >= bottomOfHoverScrollPosition) {\n\t\t\t\ttop = hoverElementHeight - iconsHeight;\n\t\t\t} else {\n\t\t\t\ttop = bottomOfHoverScrollPosition - topOfRenderedPart - iconsHeight;\n\t\t\t}\n\t\t\tactionsContainerInner.style.top = `${top}px`;\n\t\t});\n\t}\n\n\tpublic async updateMarkdownHoverPartVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst hoverRenderedPart = this._getRenderedHoverPartAtIndex(index);\n\t\tconst hoverSource = hoverRenderedPart?.hoverPart.source;\n\t\tif (!hoverRenderedPart || !hoverSource?.supportsVerbosityAction(action)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHover = await this._fetchHover(hoverSource, model, action);\n\t\tif (!newHover) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHoverSource = new HoverSource(newHover, hoverSource.hoverProvider, hoverSource.hoverPosition);\n\t\tconst initialHoverPart = hoverRenderedPart.hoverPart;\n\t\tconst newHoverPart = new MarkdownHover(\n\t\t\tthis._hoverParticipant,\n\t\t\tinitialHoverPart.range,\n\t\t\tnewHover.contents,\n\t\t\tinitialHoverPart.isBeforeContent,\n\t\t\tinitialHoverPart.ordinal,\n\t\t\tnewHoverSource\n\t\t);\n\t\tconst newHoverRenderedPart = this._updateRenderedHoverPart(index, newHoverPart);\n\t\tif (!newHoverRenderedPart) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\thoverPart: newHoverPart,\n\t\t\thoverElement: newHoverRenderedPart.hoverElement\n\t\t};\n\t}\n\n\tprivate async _fetchHover(hoverSource: HoverSource, model: ITextModel, action: HoverVerbosityAction): Promise<Hover | null | undefined> {\n\t\tlet verbosityDelta = action === HoverVerbosityAction.Increase ? 1 : -1;\n\t\tconst provider = hoverSource.hoverProvider;\n\t\tconst ongoingHoverOperation = this._ongoingHoverOperations.get(provider);\n\t\tif (ongoingHoverOperation) {\n\t\t\tongoingHoverOperation.tokenSource.cancel();\n\t\t\tverbosityDelta += ongoingHoverOperation.verbosityDelta;\n\t\t}\n\t\tconst tokenSource = new CancellationTokenSource();\n\t\tthis._ongoingHoverOperations.set(provider, { verbosityDelta, tokenSource });\n\t\tconst context: HoverContext = { verbosityRequest: { verbosityDelta, previousHover: hoverSource.hover } };\n\t\tlet hover: Hover | null | undefined;\n\t\ttry {\n\t\t\thover = await Promise.resolve(provider.provideHover(model, hoverSource.hoverPosition, tokenSource.token, context));\n\t\t} catch (e) {\n\t\t\tonUnexpectedExternalError(e);\n\t\t}\n\t\ttokenSource.dispose();\n\t\tthis._ongoingHoverOperations.delete(provider);\n\t\treturn hover;\n\t}\n\n\tprivate _updateRenderedHoverPart(index: number, hoverPart: MarkdownHover): RenderedMarkdownHoverPart | undefined {\n\t\tif (index >= this.renderedHoverParts.length || index < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, this._onFinishedRendering);\n\t\tconst currentRenderedHoverPart = this.renderedHoverParts[index];\n\t\tconst currentRenderedMarkdown = currentRenderedHoverPart.hoverElement;\n\t\tconst renderedMarkdown = renderedHoverPart.hoverElement;\n\t\tconst renderedChildrenElements = Array.from(renderedMarkdown.children);\n\t\tcurrentRenderedMarkdown.replaceChildren(...renderedChildrenElements);\n\t\tconst newRenderedHoverPart = new RenderedMarkdownHoverPart(\n\t\t\thoverPart,\n\t\t\tcurrentRenderedMarkdown,\n\t\t\trenderedHoverPart.disposables,\n\t\t\trenderedHoverPart.actionsContainer\n\t\t);\n\t\tcurrentRenderedHoverPart.dispose();\n\t\tthis.renderedHoverParts[index] = newRenderedHoverPart;\n\t\treturn newRenderedHoverPart;\n\t}\n\n\tprivate _getRenderedHoverPartAtIndex(index: number): RenderedMarkdownHoverPart | undefined {\n\t\treturn this.renderedHoverParts[index];\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nexport function renderMarkdownHovers(\n\tcontext: IEditorHoverRenderContext,\n\tmarkdownHovers: MarkdownHover[],\n\teditor: ICodeEditor,\n\tlanguageService: ILanguageService,\n\topenerService: IOpenerService,\n): IRenderedHoverParts<MarkdownHover> {\n\n\t// Sort hover parts to keep them stable since they might come in async, out-of-order\n\tmarkdownHovers.sort(compareBy(hover => hover.ordinal, numberComparator));\n\tconst renderedHoverParts: IRenderedHoverPart<MarkdownHover>[] = [];\n\tfor (const markdownHover of markdownHovers) {\n\t\tconst renderedHoverPart = renderMarkdown(\n\t\t\teditor,\n\t\t\tmarkdownHover,\n\t\t\tlanguageService,\n\t\t\topenerService,\n\t\t\tcontext.onContentsChanged,\n\t\t);\n\t\tcontext.fragment.appendChild(renderedHoverPart.hoverElement);\n\t\trenderedHoverParts.push(renderedHoverPart);\n\t}\n\treturn new RenderedHoverParts(renderedHoverParts);\n}\n\nfunction renderMarkdown(\n\teditor: ICodeEditor,\n\tmarkdownHover: MarkdownHover,\n\tlanguageService: ILanguageService,\n\topenerService: IOpenerService,\n\tonFinishedRendering: () => void,\n): IRenderedHoverPart<MarkdownHover> {\n\tconst disposables = new DisposableStore();\n\tconst renderedMarkdown = $('div.hover-row');\n\tconst renderedMarkdownContents = $('div.hover-row-contents');\n\trenderedMarkdown.appendChild(renderedMarkdownContents);\n\tconst markdownStrings = markdownHover.contents;\n\tfor (const markdownString of markdownStrings) {\n\t\tif (isEmptyMarkdownString(markdownString)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst markdownHoverElement = $('div.markdown-hover');\n\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\t\tconst renderer = new MarkdownRenderer({ editor }, languageService, openerService);\n\n\t\tconst renderedContents = disposables.add(renderer.render(markdownString, {\n\t\t\tasyncRenderCallback: () => {\n\t\t\t\thoverContentsElement.className = 'hover-contents code-hover-contents';\n\t\t\t\tonFinishedRendering();\n\t\t\t}\n\t\t}));\n\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\trenderedMarkdownContents.appendChild(markdownHoverElement);\n\t}\n\tconst renderedHoverPart: IRenderedHoverPart<MarkdownHover> = {\n\t\thoverPart: markdownHover,\n\t\thoverElement: renderedMarkdown,\n\t\tdispose() { disposables.dispose(); }\n\t};\n\treturn renderedHoverPart;\n}\n\nexport function labelForHoverVerbosityAction(keybindingService: IKeybindingService, action: HoverVerbosityAction): string {\n\tswitch (action) {\n\t\tcase HoverVerbosityAction.Increase: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(INCREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('increaseVerbosityWithKb', \"Increase Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('increaseVerbosity', \"Increase Hover Verbosity\");\n\t\t}\n\t\tcase HoverVerbosityAction.Decrease: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(DECREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('decreaseVerbosityWithKb', \"Decrease Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('decreaseVerbosity', \"Decrease Hover Verbosity\");\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/hover/browser/markdownHoverParticipant.ts"],"names":[],"mappings":"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","file":"markdownHoverParticipant.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 { asArray, compareBy, numberComparator } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { DisposableStore, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\nimport { DECREASE_HOVER_VERBOSITY_ACTION_ID, INCREASE_HOVER_VERBOSITY_ACTION_ID } from './hoverActionIds.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IModelDecoration, ITextModel } from '../../../common/model.js';\nimport { HoverAnchor, HoverAnchorType, HoverRangeAnchor, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from './hoverTypes.js';\nimport * as nls from '../../../../nls.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Hover, HoverContext, HoverProvider, HoverVerbosityAction } from '../../../common/languages.js';\nimport { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { ClickAction, HoverPosition, KeyDownAction } from '../../../../base/browser/ui/hover/hoverWidget.js';\nimport { KeyCode } from '../../../../base/common/keyCodes.js';\nimport { IHoverService, WorkbenchHoverDelegate } from '../../../../platform/hover/browser/hover.js';\nimport { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { getHoverProviderResultsAsAsyncIterable } from './getHover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from './hoverOperation.js';\nimport { ScrollEvent } from '../../../../base/common/scrollable.js';\n\nconst $ = dom.$;\nconst increaseHoverVerbosityIcon = registerIcon('hover-increase-verbosity', Codicon.add, nls.localize('increaseHoverVerbosity', 'Icon for increaseing hover verbosity.'));\nconst decreaseHoverVerbosityIcon = registerIcon('hover-decrease-verbosity', Codicon.remove, nls.localize('decreaseHoverVerbosity', 'Icon for decreasing hover verbosity.'));\n\nexport class MarkdownHover implements IHoverPart {\n\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<MarkdownHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly contents: IMarkdownString[],\n\t\tpublic readonly isBeforeContent: boolean,\n\t\tpublic readonly ordinal: number,\n\t\tpublic readonly source: HoverSource | undefined = undefined,\n\t) { }\n\n\tpublic isValidForHoverAnchor(anchor: HoverAnchor): boolean {\n\t\treturn (\n\t\t\tanchor.type === HoverAnchorType.Range\n\t\t\t&& this.range.startColumn <= anchor.range.startColumn\n\t\t\t&& this.range.endColumn >= anchor.range.endColumn\n\t\t);\n\t}\n}\n\nclass HoverSource {\n\n\tconstructor(\n\t\treadonly hover: Hover,\n\t\treadonly hoverProvider: HoverProvider,\n\t\treadonly hoverPosition: Position,\n\t) { }\n\n\tpublic supportsVerbosityAction(hoverVerbosityAction: HoverVerbosityAction): boolean {\n\t\tswitch (hoverVerbosityAction) {\n\t\t\tcase HoverVerbosityAction.Increase:\n\t\t\t\treturn this.hover.canIncreaseVerbosity ?? false;\n\t\t\tcase HoverVerbosityAction.Decrease:\n\t\t\t\treturn this.hover.canDecreaseVerbosity ?? false;\n\t\t}\n\t}\n}\n\nexport class MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic readonly hoverOrdinal: number = 3;\n\n\tprivate _renderedHoverParts: MarkdownRenderedHoverParts | undefined;\n\n\tconstructor(\n\t\tprotected readonly _editor: ICodeEditor,\n\t\t@IMarkdownRendererService private readonly _markdownRendererService: IMarkdownRendererService,\n\t\t@IConfigurationService private readonly _configurationService: IConfigurationService,\n\t\t@ILanguageFeaturesService protected readonly _languageFeaturesService: ILanguageFeaturesService,\n\t\t@IKeybindingService private readonly _keybindingService: IKeybindingService,\n\t\t@IHoverService private readonly _hoverService: IHoverService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t) { }\n\n\tpublic createLoadingMessage(anchor: HoverAnchor): MarkdownHover | null {\n\t\treturn new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(nls.localize('modesContentHover.loading', \"Loading...\"))], false, 2000);\n\t}\n\n\tpublic computeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): MarkdownHover[] {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst lineNumber = anchor.range.startLineNumber;\n\t\tconst maxColumn = model.getLineMaxColumn(lineNumber);\n\t\tconst result: MarkdownHover[] = [];\n\n\t\tlet index = 1000;\n\n\t\tconst lineLength = model.getLineLength(lineNumber);\n\t\tconst languageId = model.getLanguageIdAtPosition(anchor.range.startLineNumber, anchor.range.startColumn);\n\t\tconst stopRenderingLineAfter = this._editor.getOption(EditorOption.stopRenderingLineAfter);\n\t\tconst maxTokenizationLineLength = this._configurationService.getValue<number>('editor.maxTokenizationLineLength', {\n\t\t\toverrideIdentifier: languageId\n\t\t});\n\t\tlet stopRenderingMessage = false;\n\t\tif (stopRenderingLineAfter >= 0 && lineLength > stopRenderingLineAfter && anchor.range.startColumn >= stopRenderingLineAfter) {\n\t\t\tstopRenderingMessage = true;\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('stopped rendering', \"Rendering paused for long line for performance reasons. This can be configured via `editor.stopRenderingLineAfter`.\")\n\t\t\t}], false, index++));\n\t\t}\n\t\tif (!stopRenderingMessage && typeof maxTokenizationLineLength === 'number' && lineLength >= maxTokenizationLineLength) {\n\t\t\tresult.push(new MarkdownHover(this, anchor.range, [{\n\t\t\t\tvalue: nls.localize('too many characters', \"Tokenization is skipped for long lines for performance reasons. This can be configured via `editor.maxTokenizationLineLength`.\")\n\t\t\t}], false, index++));\n\t\t}\n\n\t\tlet isBeforeContent = false;\n\n\t\tfor (const d of lineDecorations) {\n\t\t\tconst startColumn = (d.range.startLineNumber === lineNumber) ? d.range.startColumn : 1;\n\t\t\tconst endColumn = (d.range.endLineNumber === lineNumber) ? d.range.endColumn : maxColumn;\n\n\t\t\tconst hoverMessage = d.options.hoverMessage;\n\t\t\tif (!hoverMessage || isEmptyMarkdownString(hoverMessage)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (d.options.beforeContentClassName) {\n\t\t\t\tisBeforeContent = true;\n\t\t\t}\n\n\t\t\tconst range = new Range(anchor.range.startLineNumber, startColumn, anchor.range.startLineNumber, endColumn);\n\t\t\tresult.push(new MarkdownHover(this, range, asArray(hoverMessage), isBeforeContent, index++));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic computeAsync(anchor: HoverAnchor, lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\n\t\tconst hoverProviderRegistry = this._languageFeaturesService.hoverProvider;\n\t\tif (!hoverProviderRegistry.has(model)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\t\treturn this._getMarkdownHovers(hoverProviderRegistry, model, anchor, token);\n\t}\n\n\tprivate async *_getMarkdownHovers(hoverProviderRegistry: LanguageFeatureRegistry<HoverProvider>, model: ITextModel, anchor: HoverRangeAnchor, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tconst position = anchor.range.getStartPosition();\n\t\tconst hoverProviderResults = getHoverProviderResultsAsAsyncIterable(hoverProviderRegistry, model, position, token);\n\n\t\tfor await (const item of hoverProviderResults) {\n\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\tconst range = item.hover.range ? Range.lift(item.hover.range) : anchor.range;\n\t\t\t\tconst hoverSource = new HoverSource(item.hover, item.provider, position);\n\t\t\t\tyield new MarkdownHover(this, range, item.hover.contents, false, item.ordinal, hoverSource);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic renderHoverParts(context: IEditorHoverRenderContext, hoverParts: MarkdownHover[]): IRenderedHoverParts<MarkdownHover> {\n\t\tthis._renderedHoverParts = new MarkdownRenderedHoverParts(\n\t\t\thoverParts,\n\t\t\tcontext.fragment,\n\t\t\tthis,\n\t\t\tthis._editor,\n\t\t\tthis._commandService,\n\t\t\tthis._keybindingService,\n\t\t\tthis._hoverService,\n\t\t\tthis._configurationService,\n\t\t\tthis._markdownRendererService,\n\t\t\tcontext.onContentsChanged\n\t\t);\n\t\treturn this._renderedHoverParts;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis._renderedHoverParts?.handleScroll(e);\n\t}\n\n\tpublic updateMarkdownHoverVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\treturn Promise.resolve(this._renderedHoverParts?.updateMarkdownHoverPartVerbosityLevel(action, index));\n\t}\n}\n\nclass RenderedMarkdownHoverPart implements IRenderedHoverPart<MarkdownHover> {\n\n\tconstructor(\n\t\tpublic readonly hoverPart: MarkdownHover,\n\t\tpublic readonly hoverElement: HTMLElement,\n\t\tpublic readonly disposables: DisposableStore,\n\t\tpublic readonly actionsContainer?: HTMLElement\n\t) { }\n\n\tdispose(): void {\n\t\tthis.disposables.dispose();\n\t}\n}\n\nclass MarkdownRenderedHoverParts implements IRenderedHoverParts<MarkdownHover> {\n\n\tpublic renderedHoverParts: RenderedMarkdownHoverPart[];\n\n\tprivate _ongoingHoverOperations: Map<HoverProvider, { verbosityDelta: number; tokenSource: CancellationTokenSource }> = new Map();\n\n\tprivate readonly _disposables = new DisposableStore();\n\n\tconstructor(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tprivate readonly _hoverParticipant: MarkdownHoverParticipant,\n\t\tprivate readonly _editor: ICodeEditor,\n\t\tprivate readonly _commandService: ICommandService,\n\t\tprivate readonly _keybindingService: IKeybindingService,\n\t\tprivate readonly _hoverService: IHoverService,\n\t\tprivate readonly _configurationService: IConfigurationService,\n\t\tprivate readonly _markdownRendererService: IMarkdownRendererService,\n\t\tprivate readonly _onFinishedRendering: () => void,\n\t) {\n\t\tthis.renderedHoverParts = this._renderHoverParts(hoverParts, hoverPartsContainer, this._onFinishedRendering);\n\t\tthis._disposables.add(toDisposable(() => {\n\t\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\t\trenderedHoverPart.dispose();\n\t\t\t});\n\t\t\tthis._ongoingHoverOperations.forEach(operation => {\n\t\t\t\toperation.tokenSource.dispose(true);\n\t\t\t});\n\t\t}));\n\t}\n\n\tprivate _renderHoverParts(\n\t\thoverParts: MarkdownHover[],\n\t\thoverPartsContainer: DocumentFragment,\n\t\tonFinishedRendering: () => void,\n\t): RenderedMarkdownHoverPart[] {\n\t\thoverParts.sort(compareBy(hover => hover.ordinal, numberComparator));\n\t\treturn hoverParts.map(hoverPart => {\n\t\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, onFinishedRendering);\n\t\t\thoverPartsContainer.appendChild(renderedHoverPart.hoverElement);\n\t\t\treturn renderedHoverPart;\n\t\t});\n\t}\n\n\tprivate _renderHoverPart(\n\t\thoverPart: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): RenderedMarkdownHoverPart {\n\n\t\tconst renderedMarkdownPart = this._renderMarkdownHover(hoverPart, onFinishedRendering);\n\t\tconst renderedMarkdownElement = renderedMarkdownPart.hoverElement;\n\t\tconst hoverSource = hoverPart.source;\n\t\tconst disposables = new DisposableStore();\n\t\tdisposables.add(renderedMarkdownPart);\n\n\t\tif (!hoverSource) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst canIncreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Increase);\n\t\tconst canDecreaseVerbosity = hoverSource.supportsVerbosityAction(HoverVerbosityAction.Decrease);\n\n\t\tif (!canIncreaseVerbosity && !canDecreaseVerbosity) {\n\t\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables);\n\t\t}\n\n\t\tconst actionsContainer = $('div.verbosity-actions');\n\t\trenderedMarkdownElement.prepend(actionsContainer);\n\t\tconst actionsContainerInner = $('div.verbosity-actions-inner');\n\t\tactionsContainer.append(actionsContainerInner);\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Increase, canIncreaseVerbosity));\n\t\tdisposables.add(this._renderHoverExpansionAction(actionsContainerInner, HoverVerbosityAction.Decrease, canDecreaseVerbosity));\n\t\treturn new RenderedMarkdownHoverPart(hoverPart, renderedMarkdownElement, disposables, actionsContainerInner);\n\t}\n\n\tprivate _renderMarkdownHover(\n\t\tmarkdownHover: MarkdownHover,\n\t\tonFinishedRendering: () => void\n\t): IRenderedHoverPart<MarkdownHover> {\n\t\tconst renderedMarkdownHover = renderMarkdown(\n\t\t\tthis._editor,\n\t\t\tmarkdownHover,\n\t\t\tthis._markdownRendererService,\n\t\t\tonFinishedRendering,\n\t\t);\n\t\treturn renderedMarkdownHover;\n\t}\n\n\tprivate _renderHoverExpansionAction(container: HTMLElement, action: HoverVerbosityAction, actionEnabled: boolean): DisposableStore {\n\t\tconst store = new DisposableStore();\n\t\tconst isActionIncrease = action === HoverVerbosityAction.Increase;\n\t\tconst actionElement = dom.append(container, $(ThemeIcon.asCSSSelector(isActionIncrease ? increaseHoverVerbosityIcon : decreaseHoverVerbosityIcon)));\n\t\tactionElement.tabIndex = 0;\n\t\tconst hoverDelegate = new WorkbenchHoverDelegate('mouse', undefined, { target: container, position: { hoverPosition: HoverPosition.LEFT } }, this._configurationService, this._hoverService);\n\t\tstore.add(this._hoverService.setupManagedHover(hoverDelegate, actionElement, labelForHoverVerbosityAction(this._keybindingService, action)));\n\t\tif (!actionEnabled) {\n\t\t\tactionElement.classList.add('disabled');\n\t\t\treturn store;\n\t\t}\n\t\tactionElement.classList.add('enabled');\n\t\tconst actionFunction = () => this._commandService.executeCommand(action === HoverVerbosityAction.Increase ? INCREASE_HOVER_VERBOSITY_ACTION_ID : DECREASE_HOVER_VERBOSITY_ACTION_ID, { focus: true });\n\t\tstore.add(new ClickAction(actionElement, actionFunction));\n\t\tstore.add(new KeyDownAction(actionElement, actionFunction, [KeyCode.Enter, KeyCode.Space]));\n\t\treturn store;\n\t}\n\n\tpublic handleScroll(e: ScrollEvent): void {\n\t\tthis.renderedHoverParts.forEach(renderedHoverPart => {\n\t\t\tconst actionsContainerInner = renderedHoverPart.actionsContainer;\n\t\t\tif (!actionsContainerInner) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst hoverElement = renderedHoverPart.hoverElement;\n\t\t\tconst topOfHoverScrollPosition = e.scrollTop;\n\t\t\tconst bottomOfHoverScrollPosition = topOfHoverScrollPosition + e.height;\n\t\t\tconst topOfRenderedPart = hoverElement.offsetTop;\n\t\t\tconst hoverElementHeight = hoverElement.clientHeight;\n\t\t\tconst bottomOfRenderedPart = topOfRenderedPart + hoverElementHeight;\n\t\t\tconst iconsHeight = 22;\n\t\t\tlet top: number;\n\t\t\tif (bottomOfRenderedPart <= bottomOfHoverScrollPosition || topOfRenderedPart >= bottomOfHoverScrollPosition) {\n\t\t\t\ttop = hoverElementHeight - iconsHeight;\n\t\t\t} else {\n\t\t\t\ttop = bottomOfHoverScrollPosition - topOfRenderedPart - iconsHeight;\n\t\t\t}\n\t\t\tactionsContainerInner.style.top = `${top}px`;\n\t\t});\n\t}\n\n\tpublic async updateMarkdownHoverPartVerbosityLevel(action: HoverVerbosityAction, index: number): Promise<{ hoverPart: MarkdownHover; hoverElement: HTMLElement } | undefined> {\n\t\tconst model = this._editor.getModel();\n\t\tif (!model) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst hoverRenderedPart = this._getRenderedHoverPartAtIndex(index);\n\t\tconst hoverSource = hoverRenderedPart?.hoverPart.source;\n\t\tif (!hoverRenderedPart || !hoverSource?.supportsVerbosityAction(action)) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHover = await this._fetchHover(hoverSource, model, action);\n\t\tif (!newHover) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst newHoverSource = new HoverSource(newHover, hoverSource.hoverProvider, hoverSource.hoverPosition);\n\t\tconst initialHoverPart = hoverRenderedPart.hoverPart;\n\t\tconst newHoverPart = new MarkdownHover(\n\t\t\tthis._hoverParticipant,\n\t\t\tinitialHoverPart.range,\n\t\t\tnewHover.contents,\n\t\t\tinitialHoverPart.isBeforeContent,\n\t\t\tinitialHoverPart.ordinal,\n\t\t\tnewHoverSource\n\t\t);\n\t\tconst newHoverRenderedPart = this._updateRenderedHoverPart(index, newHoverPart);\n\t\tif (!newHoverRenderedPart) {\n\t\t\treturn undefined;\n\t\t}\n\t\treturn {\n\t\t\thoverPart: newHoverPart,\n\t\t\thoverElement: newHoverRenderedPart.hoverElement\n\t\t};\n\t}\n\n\tprivate async _fetchHover(hoverSource: HoverSource, model: ITextModel, action: HoverVerbosityAction): Promise<Hover | null | undefined> {\n\t\tlet verbosityDelta = action === HoverVerbosityAction.Increase ? 1 : -1;\n\t\tconst provider = hoverSource.hoverProvider;\n\t\tconst ongoingHoverOperation = this._ongoingHoverOperations.get(provider);\n\t\tif (ongoingHoverOperation) {\n\t\t\tongoingHoverOperation.tokenSource.cancel();\n\t\t\tverbosityDelta += ongoingHoverOperation.verbosityDelta;\n\t\t}\n\t\tconst tokenSource = new CancellationTokenSource();\n\t\tthis._ongoingHoverOperations.set(provider, { verbosityDelta, tokenSource });\n\t\tconst context: HoverContext = { verbosityRequest: { verbosityDelta, previousHover: hoverSource.hover } };\n\t\tlet hover: Hover | null | undefined;\n\t\ttry {\n\t\t\thover = await Promise.resolve(provider.provideHover(model, hoverSource.hoverPosition, tokenSource.token, context));\n\t\t} catch (e) {\n\t\t\tonUnexpectedExternalError(e);\n\t\t}\n\t\ttokenSource.dispose();\n\t\tthis._ongoingHoverOperations.delete(provider);\n\t\treturn hover;\n\t}\n\n\tprivate _updateRenderedHoverPart(index: number, hoverPart: MarkdownHover): RenderedMarkdownHoverPart | undefined {\n\t\tif (index >= this.renderedHoverParts.length || index < 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst renderedHoverPart = this._renderHoverPart(hoverPart, this._onFinishedRendering);\n\t\tconst currentRenderedHoverPart = this.renderedHoverParts[index];\n\t\tconst currentRenderedMarkdown = currentRenderedHoverPart.hoverElement;\n\t\tconst renderedMarkdown = renderedHoverPart.hoverElement;\n\t\tconst renderedChildrenElements = Array.from(renderedMarkdown.children);\n\t\tcurrentRenderedMarkdown.replaceChildren(...renderedChildrenElements);\n\t\tconst newRenderedHoverPart = new RenderedMarkdownHoverPart(\n\t\t\thoverPart,\n\t\t\tcurrentRenderedMarkdown,\n\t\t\trenderedHoverPart.disposables,\n\t\t\trenderedHoverPart.actionsContainer\n\t\t);\n\t\tcurrentRenderedHoverPart.dispose();\n\t\tthis.renderedHoverParts[index] = newRenderedHoverPart;\n\t\treturn newRenderedHoverPart;\n\t}\n\n\tprivate _getRenderedHoverPartAtIndex(index: number): RenderedMarkdownHoverPart | undefined {\n\t\treturn this.renderedHoverParts[index];\n\t}\n\n\tpublic dispose(): void {\n\t\tthis._disposables.dispose();\n\t}\n}\n\nexport function renderMarkdownHovers(\n\tcontext: IEditorHoverRenderContext,\n\tmarkdownHovers: MarkdownHover[],\n\teditor: ICodeEditor,\n\tmarkdownRendererService: IMarkdownRendererService,\n): IRenderedHoverParts<MarkdownHover> {\n\n\t// Sort hover parts to keep them stable since they might come in async, out-of-order\n\tmarkdownHovers.sort(compareBy(hover => hover.ordinal, numberComparator));\n\tconst renderedHoverParts: IRenderedHoverPart<MarkdownHover>[] = [];\n\tfor (const markdownHover of markdownHovers) {\n\t\tconst renderedHoverPart = renderMarkdown(\n\t\t\teditor,\n\t\t\tmarkdownHover,\n\t\t\tmarkdownRendererService,\n\t\t\tcontext.onContentsChanged,\n\t\t);\n\t\tcontext.fragment.appendChild(renderedHoverPart.hoverElement);\n\t\trenderedHoverParts.push(renderedHoverPart);\n\t}\n\treturn new RenderedHoverParts(renderedHoverParts);\n}\n\nfunction renderMarkdown(\n\teditor: ICodeEditor,\n\tmarkdownHover: MarkdownHover,\n\tmarkdownRendererService: IMarkdownRendererService,\n\tonFinishedRendering: () => void,\n): IRenderedHoverPart<MarkdownHover> {\n\tconst disposables = new DisposableStore();\n\tconst renderedMarkdown = $('div.hover-row');\n\tconst renderedMarkdownContents = $('div.hover-row-contents');\n\trenderedMarkdown.appendChild(renderedMarkdownContents);\n\tconst markdownStrings = markdownHover.contents;\n\tfor (const markdownString of markdownStrings) {\n\t\tif (isEmptyMarkdownString(markdownString)) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst markdownHoverElement = $('div.markdown-hover');\n\t\tconst hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents'));\n\n\t\tconst renderedContents = disposables.add(markdownRendererService.render(markdownString, {\n\t\t\teditor,\n\t\t\tasyncRenderCallback: () => {\n\t\t\t\thoverContentsElement.className = 'hover-contents code-hover-contents';\n\t\t\t\tonFinishedRendering();\n\t\t\t}\n\t\t}));\n\t\thoverContentsElement.appendChild(renderedContents.element);\n\t\trenderedMarkdownContents.appendChild(markdownHoverElement);\n\t}\n\tconst renderedHoverPart: IRenderedHoverPart<MarkdownHover> = {\n\t\thoverPart: markdownHover,\n\t\thoverElement: renderedMarkdown,\n\t\tdispose() { disposables.dispose(); }\n\t};\n\treturn renderedHoverPart;\n}\n\nexport function labelForHoverVerbosityAction(keybindingService: IKeybindingService, action: HoverVerbosityAction): string {\n\tswitch (action) {\n\t\tcase HoverVerbosityAction.Increase: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(INCREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('increaseVerbosityWithKb', \"Increase Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('increaseVerbosity', \"Increase Hover Verbosity\");\n\t\t}\n\t\tcase HoverVerbosityAction.Decrease: {\n\t\t\tconst kb = keybindingService.lookupKeybinding(DECREASE_HOVER_VERBOSITY_ACTION_ID);\n\t\t\treturn kb ?\n\t\t\t\tnls.localize('decreaseVerbosityWithKb', \"Decrease Hover Verbosity ({0})\", kb.getLabel()) :\n\t\t\t\tnls.localize('decreaseVerbosity', \"Decrease Hover Verbosity\");\n\t\t}\n\t}\n}\n"]}
|
|
@@ -107,7 +107,7 @@ class InPlaceReplaceUp extends EditorAction {
|
|
|
107
107
|
constructor() {
|
|
108
108
|
super({
|
|
109
109
|
id: 'editor.action.inPlaceReplace.up',
|
|
110
|
-
label: nls.localize2(
|
|
110
|
+
label: nls.localize2(1231, "Replace with Previous Value"),
|
|
111
111
|
precondition: EditorContextKeys.writable,
|
|
112
112
|
kbOpts: {
|
|
113
113
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
@@ -128,7 +128,7 @@ class InPlaceReplaceDown extends EditorAction {
|
|
|
128
128
|
constructor() {
|
|
129
129
|
super({
|
|
130
130
|
id: 'editor.action.inPlaceReplace.down',
|
|
131
|
-
label: nls.localize2(
|
|
131
|
+
label: nls.localize2(1232, "Replace with Next Value"),
|
|
132
132
|
precondition: EditorContextKeys.writable,
|
|
133
133
|
kbOpts: {
|
|
134
134
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
@@ -16,13 +16,11 @@ import { isEmptyMarkdownString, MarkdownString } from '../../../../base/common/h
|
|
|
16
16
|
import { Position } from '../../../common/core/position.js';
|
|
17
17
|
import { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';
|
|
18
18
|
import { HoverForeignElementAnchor } from '../../hover/browser/hoverTypes.js';
|
|
19
|
-
import { ILanguageService } from '../../../common/languages/language.js';
|
|
20
19
|
import { ITextModelService } from '../../../common/services/resolverService.js';
|
|
21
20
|
import { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';
|
|
22
21
|
import { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';
|
|
23
22
|
import { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';
|
|
24
23
|
import { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';
|
|
25
|
-
import { IOpenerService } from '../../../../platform/opener/common/opener.js';
|
|
26
24
|
import { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';
|
|
27
25
|
import { localize } from '../../../../nls.js';
|
|
28
26
|
import * as platform from '../../../../base/common/platform.js';
|
|
@@ -31,6 +29,7 @@ import { isNonEmptyArray } from '../../../../base/common/arrays.js';
|
|
|
31
29
|
import { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';
|
|
32
30
|
import { IHoverService } from '../../../../platform/hover/browser/hover.js';
|
|
33
31
|
import { ICommandService } from '../../../../platform/commands/common/commands.js';
|
|
32
|
+
import { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
|
|
34
33
|
class InlayHintsHoverAnchor extends HoverForeignElementAnchor {
|
|
35
34
|
constructor(part, owner, initialMousePosX, initialMousePosY) {
|
|
36
35
|
super(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);
|
|
@@ -38,8 +37,8 @@ class InlayHintsHoverAnchor extends HoverForeignElementAnchor {
|
|
|
38
37
|
}
|
|
39
38
|
}
|
|
40
39
|
let InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {
|
|
41
|
-
constructor(editor,
|
|
42
|
-
super(editor,
|
|
40
|
+
constructor(editor, markdownRendererService, keybindingService, hoverService, configurationService, _resolverService, languageFeaturesService, commandService) {
|
|
41
|
+
super(editor, markdownRendererService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);
|
|
43
42
|
this._resolverService = _resolverService;
|
|
44
43
|
this.hoverOrdinal = 6;
|
|
45
44
|
}
|
|
@@ -150,14 +149,13 @@ let InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {
|
|
|
150
149
|
}
|
|
151
150
|
};
|
|
152
151
|
InlayHintsHover = __decorate([
|
|
153
|
-
__param(1,
|
|
154
|
-
__param(2,
|
|
155
|
-
__param(3,
|
|
156
|
-
__param(4,
|
|
157
|
-
__param(5,
|
|
158
|
-
__param(6,
|
|
159
|
-
__param(7,
|
|
160
|
-
__param(8, ICommandService)
|
|
152
|
+
__param(1, IMarkdownRendererService),
|
|
153
|
+
__param(2, IKeybindingService),
|
|
154
|
+
__param(3, IHoverService),
|
|
155
|
+
__param(4, IConfigurationService),
|
|
156
|
+
__param(5, ITextModelService),
|
|
157
|
+
__param(6, ILanguageFeaturesService),
|
|
158
|
+
__param(7, ICommandService)
|
|
161
159
|
], InlayHintsHover);
|
|
162
160
|
export { InlayHintsHover };
|
|
163
161
|
//# sourceMappingURL=inlayHintsHover.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/inlayHints/browser/inlayHintsHover.ts"],"names":[],"mappings":"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","file":"inlayHintsHover.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 { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IModelDecoration } from '../../../common/model.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { HoverAnchor, HoverForeignElementAnchor, IEditorHoverParticipant } from '../../hover/browser/hoverTypes.js';\nimport { ILanguageService } from '../../../common/languages/language.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';\nimport { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';\nimport { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { localize } from '../../../../nls.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { asCommandLink } from './inlayHints.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from '../../hover/browser/hoverOperation.js';\n\nclass InlayHintsHoverAnchor extends HoverForeignElementAnchor {\n\tconstructor(\n\t\treadonly part: RenderedInlayHintLabelPart,\n\t\towner: InlayHintsHover,\n\t\tinitialMousePosX: number | undefined,\n\t\tinitialMousePosY: number | undefined\n\t) {\n\t\tsuper(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);\n\t}\n}\n\nexport class InlayHintsHover extends MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic override readonly hoverOrdinal: number = 6;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ILanguageService languageService: ILanguageService,\n\t\t@IOpenerService openerService: IOpenerService,\n\t\t@IKeybindingService keybindingService: IKeybindingService,\n\t\t@IHoverService hoverService: IHoverService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t\t@ITextModelService private readonly _resolverService: ITextModelService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t\t@ICommandService commandService: ICommandService\n\t) {\n\t\tsuper(editor, languageService, openerService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);\n\t}\n\n\tsuggestHoverAnchor(mouseEvent: IEditorMouseEvent): HoverAnchor | null {\n\t\tconst controller = InlayHintsController.get(this._editor);\n\t\tif (!controller) {\n\t\t\treturn null;\n\t\t}\n\t\tif (mouseEvent.target.type !== MouseTargetType.CONTENT_TEXT) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = mouseEvent.target.detail.injectedText?.options;\n\t\tif (!(options instanceof ModelDecorationInjectedTextOptions && options.attachedData instanceof RenderedInlayHintLabelPart)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new InlayHintsHoverAnchor(options.attachedData, this, mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\toverride computeSync(): MarkdownHover[] {\n\t\treturn [];\n\t}\n\n\toverride computeAsync(anchor: HoverAnchor, _lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterableProducer<MarkdownHover> {\n\t\tif (!(anchor instanceof InlayHintsHoverAnchor)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\treturn new AsyncIterableProducer<MarkdownHover>(async executor => {\n\n\t\t\tconst { part } = anchor;\n\t\t\tawait part.item.resolve(token);\n\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// (1) Inlay Tooltip\n\t\t\tlet itemTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.item.hint.tooltip === 'string') {\n\t\t\t\titemTooltip = new MarkdownString().appendText(part.item.hint.tooltip);\n\t\t\t} else if (part.item.hint.tooltip) {\n\t\t\t\titemTooltip = part.item.hint.tooltip;\n\t\t\t}\n\t\t\tif (itemTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [itemTooltip], false, 0));\n\t\t\t}\n\t\t\t// (1.2) Inlay dbl-click gesture\n\t\t\tif (isNonEmptyArray(part.item.hint.textEdits)) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize('hint.dbl', \"Double-click to insert\"))], false, 10001));\n\t\t\t}\n\n\t\t\t// (2) Inlay Label Part Tooltip\n\t\t\tlet partTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.part.tooltip === 'string') {\n\t\t\t\tpartTooltip = new MarkdownString().appendText(part.part.tooltip);\n\t\t\t} else if (part.part.tooltip) {\n\t\t\t\tpartTooltip = part.part.tooltip;\n\t\t\t}\n\t\t\tif (partTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [partTooltip], false, 1));\n\t\t\t}\n\n\t\t\t// (2.2) Inlay Label Part Help Hover\n\t\t\tif (part.part.location || part.part.command) {\n\t\t\t\tlet linkHint: MarkdownString | undefined;\n\t\t\t\tconst useMetaKey = this._editor.getOption(EditorOption.multiCursorModifier) === 'altKey';\n\t\t\t\tconst kb = useMetaKey\n\t\t\t\t\t? platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.meta.mac', \"cmd + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.meta', \"ctrl + click\")\n\t\t\t\t\t: platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.alt.mac', \"option + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.alt', \"alt + click\");\n\n\t\t\t\tif (part.part.location && part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.defAndCommand', 'Go to Definition ({0}), right click for more', kb));\n\t\t\t\t} else if (part.part.location) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.def', 'Go to Definition ({0})', kb));\n\t\t\t\t} else if (part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString(`[${localize('hint.cmd', \"Execute Command\")}](${asCommandLink(part.part.command)} \"${part.part.command.title}\") (${kb})`, { isTrusted: true });\n\t\t\t\t}\n\t\t\t\tif (linkHint) {\n\t\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], false, 10000));\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// (3) Inlay Label Part Location tooltip\n\t\t\tconst iterable = this._resolveInlayHintLabelPartHover(part, token);\n\t\t\tfor await (const item of iterable) {\n\t\t\t\texecutor.emitOne(item);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async *_resolveInlayHintLabelPartHover(part: RenderedInlayHintLabelPart, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!part.part.location) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { uri, range } = part.part.location;\n\t\tconst ref = await this._resolverService.createModelReference(uri);\n\t\ttry {\n\t\t\tconst model = ref.object.textEditorModel;\n\t\t\tif (!this._languageFeaturesService.hoverProvider.has(model)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor await (const item of getHoverProviderResultsAsAsyncIterable(this._languageFeaturesService.hoverProvider, model, new Position(range.startLineNumber, range.startColumn), token)) {\n\t\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\t\tyield new MarkdownHover(this, part.item.anchor.range, item.hover.contents, false, 2 + item.ordinal);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tref.dispose();\n\t\t}\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/inlayHints/browser/inlayHintsHover.ts"],"names":[],"mappings":"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","file":"inlayHintsHover.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 { AsyncIterableProducer } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IMarkdownString, isEmptyMarkdownString, MarkdownString } from '../../../../base/common/htmlContent.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IModelDecoration } from '../../../common/model.js';\nimport { ModelDecorationInjectedTextOptions } from '../../../common/model/textModel.js';\nimport { HoverAnchor, HoverForeignElementAnchor, IEditorHoverParticipant } from '../../hover/browser/hoverTypes.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { getHoverProviderResultsAsAsyncIterable } from '../../hover/browser/getHover.js';\nimport { MarkdownHover, MarkdownHoverParticipant } from '../../hover/browser/markdownHoverParticipant.js';\nimport { RenderedInlayHintLabelPart, InlayHintsController } from './inlayHintsController.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { localize } from '../../../../nls.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { asCommandLink } from './inlayHints.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { IKeybindingService } from '../../../../platform/keybinding/common/keybinding.js';\nimport { IHoverService } from '../../../../platform/hover/browser/hover.js';\nimport { ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { HoverStartSource } from '../../hover/browser/hoverOperation.js';\nimport { IMarkdownRendererService } from '../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';\n\nclass InlayHintsHoverAnchor extends HoverForeignElementAnchor {\n\tconstructor(\n\t\treadonly part: RenderedInlayHintLabelPart,\n\t\towner: InlayHintsHover,\n\t\tinitialMousePosX: number | undefined,\n\t\tinitialMousePosY: number | undefined\n\t) {\n\t\tsuper(10, owner, part.item.anchor.range, initialMousePosX, initialMousePosY, true);\n\t}\n}\n\nexport class InlayHintsHover extends MarkdownHoverParticipant implements IEditorHoverParticipant<MarkdownHover> {\n\n\tpublic override readonly hoverOrdinal: number = 6;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IMarkdownRendererService markdownRendererService: IMarkdownRendererService,\n\t\t@IKeybindingService keybindingService: IKeybindingService,\n\t\t@IHoverService hoverService: IHoverService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t\t@ITextModelService private readonly _resolverService: ITextModelService,\n\t\t@ILanguageFeaturesService languageFeaturesService: ILanguageFeaturesService,\n\t\t@ICommandService commandService: ICommandService,\n\t) {\n\t\tsuper(editor, markdownRendererService, configurationService, languageFeaturesService, keybindingService, hoverService, commandService);\n\t}\n\n\tsuggestHoverAnchor(mouseEvent: IEditorMouseEvent): HoverAnchor | null {\n\t\tconst controller = InlayHintsController.get(this._editor);\n\t\tif (!controller) {\n\t\t\treturn null;\n\t\t}\n\t\tif (mouseEvent.target.type !== MouseTargetType.CONTENT_TEXT) {\n\t\t\treturn null;\n\t\t}\n\t\tconst options = mouseEvent.target.detail.injectedText?.options;\n\t\tif (!(options instanceof ModelDecorationInjectedTextOptions && options.attachedData instanceof RenderedInlayHintLabelPart)) {\n\t\t\treturn null;\n\t\t}\n\t\treturn new InlayHintsHoverAnchor(options.attachedData, this, mouseEvent.event.posx, mouseEvent.event.posy);\n\t}\n\n\toverride computeSync(): MarkdownHover[] {\n\t\treturn [];\n\t}\n\n\toverride computeAsync(anchor: HoverAnchor, _lineDecorations: IModelDecoration[], source: HoverStartSource, token: CancellationToken): AsyncIterableProducer<MarkdownHover> {\n\t\tif (!(anchor instanceof InlayHintsHoverAnchor)) {\n\t\t\treturn AsyncIterableProducer.EMPTY;\n\t\t}\n\n\t\treturn new AsyncIterableProducer<MarkdownHover>(async executor => {\n\n\t\t\tconst { part } = anchor;\n\t\t\tawait part.item.resolve(token);\n\n\t\t\tif (token.isCancellationRequested) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// (1) Inlay Tooltip\n\t\t\tlet itemTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.item.hint.tooltip === 'string') {\n\t\t\t\titemTooltip = new MarkdownString().appendText(part.item.hint.tooltip);\n\t\t\t} else if (part.item.hint.tooltip) {\n\t\t\t\titemTooltip = part.item.hint.tooltip;\n\t\t\t}\n\t\t\tif (itemTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [itemTooltip], false, 0));\n\t\t\t}\n\t\t\t// (1.2) Inlay dbl-click gesture\n\t\t\tif (isNonEmptyArray(part.item.hint.textEdits)) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize('hint.dbl', \"Double-click to insert\"))], false, 10001));\n\t\t\t}\n\n\t\t\t// (2) Inlay Label Part Tooltip\n\t\t\tlet partTooltip: IMarkdownString | undefined;\n\t\t\tif (typeof part.part.tooltip === 'string') {\n\t\t\t\tpartTooltip = new MarkdownString().appendText(part.part.tooltip);\n\t\t\t} else if (part.part.tooltip) {\n\t\t\t\tpartTooltip = part.part.tooltip;\n\t\t\t}\n\t\t\tif (partTooltip) {\n\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [partTooltip], false, 1));\n\t\t\t}\n\n\t\t\t// (2.2) Inlay Label Part Help Hover\n\t\t\tif (part.part.location || part.part.command) {\n\t\t\t\tlet linkHint: MarkdownString | undefined;\n\t\t\t\tconst useMetaKey = this._editor.getOption(EditorOption.multiCursorModifier) === 'altKey';\n\t\t\t\tconst kb = useMetaKey\n\t\t\t\t\t? platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.meta.mac', \"cmd + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.meta', \"ctrl + click\")\n\t\t\t\t\t: platform.isMacintosh\n\t\t\t\t\t\t? localize('links.navigate.kb.alt.mac', \"option + click\")\n\t\t\t\t\t\t: localize('links.navigate.kb.alt', \"alt + click\");\n\n\t\t\t\tif (part.part.location && part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.defAndCommand', 'Go to Definition ({0}), right click for more', kb));\n\t\t\t\t} else if (part.part.location) {\n\t\t\t\t\tlinkHint = new MarkdownString().appendText(localize('hint.def', 'Go to Definition ({0})', kb));\n\t\t\t\t} else if (part.part.command) {\n\t\t\t\t\tlinkHint = new MarkdownString(`[${localize('hint.cmd', \"Execute Command\")}](${asCommandLink(part.part.command)} \"${part.part.command.title}\") (${kb})`, { isTrusted: true });\n\t\t\t\t}\n\t\t\t\tif (linkHint) {\n\t\t\t\t\texecutor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], false, 10000));\n\t\t\t\t}\n\t\t\t}\n\n\n\t\t\t// (3) Inlay Label Part Location tooltip\n\t\t\tconst iterable = this._resolveInlayHintLabelPartHover(part, token);\n\t\t\tfor await (const item of iterable) {\n\t\t\t\texecutor.emitOne(item);\n\t\t\t}\n\t\t});\n\t}\n\n\tprivate async *_resolveInlayHintLabelPartHover(part: RenderedInlayHintLabelPart, token: CancellationToken): AsyncIterable<MarkdownHover> {\n\t\tif (!part.part.location) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst { uri, range } = part.part.location;\n\t\tconst ref = await this._resolverService.createModelReference(uri);\n\t\ttry {\n\t\t\tconst model = ref.object.textEditorModel;\n\t\t\tif (!this._languageFeaturesService.hoverProvider.has(model)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor await (const item of getHoverProviderResultsAsAsyncIterable(this._languageFeaturesService.hoverProvider, model, new Position(range.startLineNumber, range.startColumn), token)) {\n\t\t\t\tif (!isEmptyMarkdownString(item.hover.contents)) {\n\t\t\t\t\tyield new MarkdownHover(this, part.item.anchor.range, item.hover.contents, false, 2 + item.ordinal);\n\t\t\t\t}\n\t\t\t}\n\t\t} finally {\n\t\t\tref.dispose();\n\t\t}\n\t}\n}\n"]}
|
|
@@ -16,15 +16,13 @@ import { MarkdownString } from '../../../../../base/common/htmlContent.js';
|
|
|
16
16
|
import { DisposableStore } from '../../../../../base/common/lifecycle.js';
|
|
17
17
|
import { autorun, autorunWithStore, constObservable } from '../../../../../base/common/observable.js';
|
|
18
18
|
import { Range } from '../../../../common/core/range.js';
|
|
19
|
-
import { ILanguageService } from '../../../../common/languages/language.js';
|
|
20
19
|
import { HoverForeignElementAnchor, RenderedHoverParts } from '../../../hover/browser/hoverTypes.js';
|
|
21
20
|
import { InlineCompletionsController } from '../controller/inlineCompletionsController.js';
|
|
22
21
|
import { InlineSuggestionHintsContentWidget } from './inlineCompletionsHintsWidget.js';
|
|
23
|
-
import {
|
|
22
|
+
import { IMarkdownRendererService } from '../../../../browser/widget/markdownRenderer/browser/markdownRenderer.js';
|
|
24
23
|
import * as nls from '../../../../../nls.js';
|
|
25
24
|
import { IAccessibilityService } from '../../../../../platform/accessibility/common/accessibility.js';
|
|
26
25
|
import { IInstantiationService } from '../../../../../platform/instantiation/common/instantiation.js';
|
|
27
|
-
import { IOpenerService } from '../../../../../platform/opener/common/opener.js';
|
|
28
26
|
import { ITelemetryService } from '../../../../../platform/telemetry/common/telemetry.js';
|
|
29
27
|
import { GhostTextView } from '../view/ghostText/ghostTextView.js';
|
|
30
28
|
export class InlineCompletionsHover {
|
|
@@ -40,13 +38,12 @@ export class InlineCompletionsHover {
|
|
|
40
38
|
}
|
|
41
39
|
}
|
|
42
40
|
let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant {
|
|
43
|
-
constructor(_editor,
|
|
41
|
+
constructor(_editor, accessibilityService, _instantiationService, _telemetryService, _markdownRendererService) {
|
|
44
42
|
this._editor = _editor;
|
|
45
|
-
this._languageService = _languageService;
|
|
46
|
-
this._openerService = _openerService;
|
|
47
43
|
this.accessibilityService = accessibilityService;
|
|
48
44
|
this._instantiationService = _instantiationService;
|
|
49
45
|
this._telemetryService = _telemetryService;
|
|
46
|
+
this._markdownRendererService = _markdownRendererService;
|
|
50
47
|
this.hoverOrdinal = 4;
|
|
51
48
|
}
|
|
52
49
|
suggestHoverAnchor(mouseEvent) {
|
|
@@ -122,10 +119,10 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
|
|
|
122
119
|
const $ = dom.$;
|
|
123
120
|
const markdownHoverElement = $('div.hover-row.markdown-hover');
|
|
124
121
|
const hoverContentsElement = dom.append(markdownHoverElement, $('div.hover-contents', { ['aria-live']: 'assertive' }));
|
|
125
|
-
const renderer = new MarkdownRenderer({ editor: this._editor }, this._languageService, this._openerService);
|
|
126
122
|
const render = (code) => {
|
|
127
123
|
const inlineSuggestionAvailable = nls.localize(1197, "Suggestion:");
|
|
128
|
-
const renderedContents = disposables.add(
|
|
124
|
+
const renderedContents = disposables.add(this._markdownRendererService.render(new MarkdownString().appendText(inlineSuggestionAvailable).appendCodeblock('text', code), {
|
|
125
|
+
editor: this._editor,
|
|
129
126
|
asyncRenderCallback: () => {
|
|
130
127
|
hoverContentsElement.className = 'hover-contents code-hover-contents';
|
|
131
128
|
context.onContentsChanged();
|
|
@@ -149,11 +146,10 @@ let InlineCompletionsHoverParticipant = class InlineCompletionsHoverParticipant
|
|
|
149
146
|
}
|
|
150
147
|
};
|
|
151
148
|
InlineCompletionsHoverParticipant = __decorate([
|
|
152
|
-
__param(1,
|
|
153
|
-
__param(2,
|
|
154
|
-
__param(3,
|
|
155
|
-
__param(4,
|
|
156
|
-
__param(5, ITelemetryService)
|
|
149
|
+
__param(1, IAccessibilityService),
|
|
150
|
+
__param(2, IInstantiationService),
|
|
151
|
+
__param(3, ITelemetryService),
|
|
152
|
+
__param(4, IMarkdownRendererService)
|
|
157
153
|
], InlineCompletionsHoverParticipant);
|
|
158
154
|
export { InlineCompletionsHoverParticipant };
|
|
159
155
|
//# sourceMappingURL=hoverParticipant.js.map
|