monaco-editor-core 0.55.0-dev-20251028 → 0.55.0-dev-20251030
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm/nls.keys.json +1 -1
- package/esm/nls.messages.cs.js +2 -2
- package/esm/nls.messages.de.js +2 -2
- package/esm/nls.messages.es.js +2 -2
- package/esm/nls.messages.fr.js +2 -2
- package/esm/nls.messages.it.js +2 -2
- package/esm/nls.messages.ja.js +2 -2
- package/esm/nls.messages.js +1 -1
- package/esm/nls.messages.json +1 -1
- package/esm/nls.messages.ko.js +2 -2
- package/esm/nls.messages.pl.js +2 -2
- package/esm/nls.messages.pt-br.js +2 -2
- package/esm/nls.messages.ru.js +2 -2
- package/esm/nls.messages.tr.js +2 -2
- package/esm/nls.messages.zh-cn.js +2 -2
- package/esm/nls.messages.zh-tw.js +2 -2
- package/esm/nls.metadata.json +14 -0
- package/esm/vs/base/browser/markdownRenderer.js +53 -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/common/codiconsLibrary.js +6 -3
- package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
- package/esm/vs/base/common/glob.js +41 -31
- package/esm/vs/base/common/glob.js.map +1 -1
- package/esm/vs/base/common/htmlContent.js +5 -1
- package/esm/vs/base/common/htmlContent.js.map +1 -1
- package/esm/vs/base/common/network.js +2 -6
- package/esm/vs/base/common/network.js.map +1 -1
- package/esm/vs/base/common/strings.js +8 -6
- package/esm/vs/base/common/strings.js.map +1 -1
- package/esm/vs/editor/browser/editorExtensions.js +5 -0
- package/esm/vs/editor/browser/editorExtensions.js.map +1 -1
- package/esm/vs/editor/browser/triggerInlineEditCommandsRegistry.js +17 -0
- package/esm/vs/editor/browser/triggerInlineEditCommandsRegistry.js.map +1 -0
- package/esm/vs/editor/common/textModelEditSource.js +1 -0
- package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +2 -1
- package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +4 -0
- package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
- package/esm/vs/editor/contrib/comment/browser/comment.js +16 -12
- package/esm/vs/editor/contrib/comment/browser/comment.js.map +1 -1
- package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
- package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +7 -5
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js.map +1 -1
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
- package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
- package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
- package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
- package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
- package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
- package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
- package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
- package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
- package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
- package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
- package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
- package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
- package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
- package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
- package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
- package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
- package/esm/vs/editor/contrib/hover/browser/contentHoverRendered.js +17 -6
- package/esm/vs/editor/contrib/hover/browser/contentHoverRendered.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/contentHoverWidgetWrapper.js +6 -3
- package/esm/vs/editor/contrib/hover/browser/contentHoverWidgetWrapper.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/hover.css +36 -0
- package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
- package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +51 -0
- package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js.map +1 -0
- package/esm/vs/editor/contrib/hover/browser/hoverTypes.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +25 -9
- package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +8 -5
- package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
- package/esm/vs/editor/contrib/indentation/browser/indentation.js +29 -27
- package/esm/vs/editor/contrib/indentation/browser/indentation.js.map +1 -1
- package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +3 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +4 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
- package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/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 +87 -62
- package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
- package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
- package/esm/vs/editor/contrib/links/browser/links.js +10 -10
- package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
- package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
- package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
- package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
- package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
- package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +8 -8
- 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 +13 -12
- package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
- package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
- package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
- package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
- package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
- package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
- package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
- package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
- package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
- package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
- package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
- package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
- package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +27 -24
- 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 +9 -9
- package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
- package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
- package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
- package/esm/vs/platform/actionWidget/browser/actionList.js +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/actions.js +2 -0
- package/esm/vs/platform/actions/common/actions.js.map +1 -1
- package/esm/vs/platform/actions/common/menuService.js +2 -2
- package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
- package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
- package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
- package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
- package/esm/vs/platform/contextkey/common/scanner.js +5 -5
- package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
- package/esm/vs/platform/hover/browser/hoverWidget.js +2 -2
- package/esm/vs/platform/hover/browser/hoverWidget.js.map +1 -1
- package/esm/vs/platform/hover/browser/updatableHoverWidget.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 +16 -16
- package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
- package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
- package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
- package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
- package/esm/vs/platform/workspace/common/workspace.js +1 -1
- package/package.json +2 -2
|
@@ -96,6 +96,9 @@ let MarkerHoverParticipant = class MarkerHoverParticipant {
|
|
|
96
96
|
const disposables = this._renderMarkerStatusbar(context, markerHoverForStatusbar);
|
|
97
97
|
return new RenderedHoverParts(renderedHoverParts, disposables);
|
|
98
98
|
}
|
|
99
|
+
getAccessibleContent(hoverPart) {
|
|
100
|
+
return hoverPart.marker.message;
|
|
101
|
+
}
|
|
99
102
|
_renderMarkerHover(markerHover) {
|
|
100
103
|
const disposables = new DisposableStore();
|
|
101
104
|
const hoverElement = $('div.hover-row');
|
|
@@ -169,7 +172,7 @@ let MarkerHoverParticipant = class MarkerHoverParticipant {
|
|
|
169
172
|
const markerController = MarkerController.get(this._editor);
|
|
170
173
|
if (markerController) {
|
|
171
174
|
context.statusBar.addAction({
|
|
172
|
-
label: nls.localize(
|
|
175
|
+
label: nls.localize(1138, "View Problem"),
|
|
173
176
|
commandId: NextMarkerAction.ID,
|
|
174
177
|
run: () => {
|
|
175
178
|
context.hide();
|
|
@@ -184,14 +187,14 @@ let MarkerHoverParticipant = class MarkerHoverParticipant {
|
|
|
184
187
|
if (this.recentMarkerCodeActionsInfo) {
|
|
185
188
|
if (IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker) === IMarkerData.makeKey(markerHover.marker)) {
|
|
186
189
|
if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {
|
|
187
|
-
quickfixPlaceholderElement.textContent = nls.localize(
|
|
190
|
+
quickfixPlaceholderElement.textContent = nls.localize(1139, "No quick fixes available");
|
|
188
191
|
}
|
|
189
192
|
}
|
|
190
193
|
else {
|
|
191
194
|
this.recentMarkerCodeActionsInfo = undefined;
|
|
192
195
|
}
|
|
193
196
|
}
|
|
194
|
-
const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize(
|
|
197
|
+
const updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize(1140, "Checking for quick fixes..."), 200, disposables);
|
|
195
198
|
if (!quickfixPlaceholderElement.textContent) {
|
|
196
199
|
// Have some content in here to avoid flickering
|
|
197
200
|
quickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); //
|
|
@@ -203,7 +206,7 @@ let MarkerHoverParticipant = class MarkerHoverParticipant {
|
|
|
203
206
|
this.recentMarkerCodeActionsInfo = { marker: markerHover.marker, hasCodeActions: actions.validActions.length > 0 };
|
|
204
207
|
if (!this.recentMarkerCodeActionsInfo.hasCodeActions) {
|
|
205
208
|
actions.dispose();
|
|
206
|
-
quickfixPlaceholderElement.textContent = nls.localize(
|
|
209
|
+
quickfixPlaceholderElement.textContent = nls.localize(1141, "No quick fixes available");
|
|
207
210
|
return;
|
|
208
211
|
}
|
|
209
212
|
quickfixPlaceholderElement.style.display = 'none';
|
|
@@ -214,7 +217,7 @@ let MarkerHoverParticipant = class MarkerHoverParticipant {
|
|
|
214
217
|
}
|
|
215
218
|
}));
|
|
216
219
|
context.statusBar.addAction({
|
|
217
|
-
label: nls.localize(
|
|
220
|
+
label: nls.localize(1142, "Quick Fix..."),
|
|
218
221
|
commandId: quickFixCommandId,
|
|
219
222
|
run: (target) => {
|
|
220
223
|
showing = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/hover/browser/markerHoverParticipant.ts"],"names":[],"mappings":"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","file":"markerHoverParticipant.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 { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancelablePromise, createCancelablePromise, disposableTimeout } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CodeActionTriggerType } from '../../../common/languages.js';\nimport { IModelDecoration } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IMarkerDecorationsService } from '../../../common/services/markerDecorations.js';\nimport { ApplyCodeActionReason, getCodeActions, quickFixCommandId } from '../../codeAction/browser/codeAction.js';\nimport { CodeActionController } from '../../codeAction/browser/codeActionController.js';\nimport { CodeActionKind, CodeActionSet, CodeActionTrigger, CodeActionTriggerSource } from '../../codeAction/common/types.js';\nimport { MarkerController, NextMarkerAction } from '../../gotoError/browser/gotoError.js';\nimport { HoverAnchor, HoverAnchorType, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from './hoverTypes.js';\nimport * as nls from '../../../../nls.js';\nimport { ITextEditorOptions } from '../../../../platform/editor/common/editor.js';\nimport { IMarker, IMarkerData, MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\n\nconst $ = dom.$;\n\nexport class MarkerHover implements IHoverPart {\n\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<MarkerHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly marker: IMarker,\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\nconst markerCodeActionTrigger: CodeActionTrigger = {\n\ttype: CodeActionTriggerType.Invoke,\n\tfilter: { include: CodeActionKind.QuickFix },\n\ttriggerAction: CodeActionTriggerSource.QuickFixHover\n};\n\nexport class MarkerHoverParticipant implements IEditorHoverParticipant<MarkerHover> {\n\n\tpublic readonly hoverOrdinal: number = 1;\n\n\tprivate recentMarkerCodeActionsInfo: { marker: IMarker; hasCodeActions: boolean } | undefined = undefined;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IMarkerDecorationsService private readonly _markerDecorationsService: IMarkerDecorationsService,\n\t\t@IOpenerService private readonly _openerService: IOpenerService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t) { }\n\n\tpublic computeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): MarkerHover[] {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range && !anchor.supportsMarkerHover) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst anchorRange = anchor.range;\n\t\tif (!model.isValidRange(anchor.range)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst lineNumber = anchorRange.startLineNumber;\n\t\tconst maxColumn = model.getLineMaxColumn(lineNumber);\n\t\tconst result: MarkerHover[] = [];\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 marker = this._markerDecorationsService.getMarker(model.uri, d);\n\t\t\tif (!marker) {\n\t\t\t\tcontinue;\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 MarkerHover(this, range, marker));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic renderHoverParts(context: IEditorHoverRenderContext, hoverParts: MarkerHover[]): IRenderedHoverParts<MarkerHover> {\n\t\tif (!hoverParts.length) {\n\t\t\treturn new RenderedHoverParts([]);\n\t\t}\n\t\tconst renderedHoverParts: IRenderedHoverPart<MarkerHover>[] = [];\n\t\thoverParts.forEach(hoverPart => {\n\t\t\tconst renderedMarkerHover = this._renderMarkerHover(hoverPart);\n\t\t\tcontext.fragment.appendChild(renderedMarkerHover.hoverElement);\n\t\t\trenderedHoverParts.push(renderedMarkerHover);\n\t\t});\n\t\tconst markerHoverForStatusbar = hoverParts.length === 1 ? hoverParts[0] : hoverParts.sort((a, b) => MarkerSeverity.compare(a.marker.severity, b.marker.severity))[0];\n\t\tconst disposables = this._renderMarkerStatusbar(context, markerHoverForStatusbar);\n\t\treturn new RenderedHoverParts(renderedHoverParts, disposables);\n\t}\n\n\tprivate _renderMarkerHover(markerHover: MarkerHover): IRenderedHoverPart<MarkerHover> {\n\t\tconst disposables: DisposableStore = new DisposableStore();\n\t\tconst hoverElement = $('div.hover-row');\n\t\tconst markerElement = dom.append(hoverElement, $('div.marker.hover-contents'));\n\t\tconst { source, message, code, relatedInformation } = markerHover.marker;\n\n\t\tthis._editor.applyFontInfo(markerElement);\n\t\tconst messageElement = dom.append(markerElement, $('span'));\n\t\tmessageElement.style.whiteSpace = 'pre-wrap';\n\t\tmessageElement.innerText = message;\n\n\t\tif (source || code) {\n\t\t\t// Code has link\n\t\t\tif (code && typeof code !== 'string') {\n\t\t\t\tconst sourceAndCodeElement = $('span');\n\t\t\t\tif (source) {\n\t\t\t\t\tconst sourceElement = dom.append(sourceAndCodeElement, $('span'));\n\t\t\t\t\tsourceElement.innerText = source;\n\t\t\t\t}\n\t\t\t\tconst codeLink = dom.append(sourceAndCodeElement, $('a.code-link'));\n\t\t\t\tcodeLink.setAttribute('href', code.target.toString(true));\n\n\t\t\t\tdisposables.add(dom.addDisposableListener(codeLink, 'click', (e) => {\n\t\t\t\t\tthis._openerService.open(code.target, { allowCommands: true });\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}));\n\n\t\t\t\tconst codeElement = dom.append(codeLink, $('span'));\n\t\t\t\tcodeElement.innerText = code.value;\n\n\t\t\t\tconst detailsElement = dom.append(markerElement, sourceAndCodeElement);\n\t\t\t\tdetailsElement.style.opacity = '0.6';\n\t\t\t\tdetailsElement.style.paddingLeft = '6px';\n\t\t\t} else {\n\t\t\t\tconst detailsElement = dom.append(markerElement, $('span'));\n\t\t\t\tdetailsElement.style.opacity = '0.6';\n\t\t\t\tdetailsElement.style.paddingLeft = '6px';\n\t\t\t\tdetailsElement.innerText = source && code ? `${source}(${code})` : source ? source : `(${code})`;\n\t\t\t}\n\t\t}\n\n\t\tif (isNonEmptyArray(relatedInformation)) {\n\t\t\tfor (const { message, resource, startLineNumber, startColumn } of relatedInformation) {\n\t\t\t\tconst relatedInfoContainer = dom.append(markerElement, $('div'));\n\t\t\t\trelatedInfoContainer.style.marginTop = '8px';\n\t\t\t\tconst a = dom.append(relatedInfoContainer, $('a'));\n\t\t\t\ta.innerText = `${basename(resource)}(${startLineNumber}, ${startColumn}): `;\n\t\t\t\ta.style.cursor = 'pointer';\n\t\t\t\tdisposables.add(dom.addDisposableListener(a, 'click', (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tif (this._openerService) {\n\t\t\t\t\t\tconst editorOptions: ITextEditorOptions = { selection: { startLineNumber, startColumn } };\n\t\t\t\t\t\tthis._openerService.open(resource, {\n\t\t\t\t\t\t\tfromUserGesture: true,\n\t\t\t\t\t\t\teditorOptions\n\t\t\t\t\t\t}).catch(onUnexpectedError);\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tconst messageElement = dom.append<HTMLAnchorElement>(relatedInfoContainer, $('span'));\n\t\t\t\tmessageElement.innerText = message;\n\t\t\t\tthis._editor.applyFontInfo(messageElement);\n\t\t\t}\n\t\t}\n\n\t\tconst renderedHoverPart: IRenderedHoverPart<MarkerHover> = {\n\t\t\thoverPart: markerHover,\n\t\t\thoverElement,\n\t\t\tdispose: () => disposables.dispose()\n\t\t};\n\t\treturn renderedHoverPart;\n\t}\n\n\tprivate _renderMarkerStatusbar(context: IEditorHoverRenderContext, markerHover: MarkerHover): IDisposable {\n\t\tconst disposables = new DisposableStore();\n\t\tif (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) {\n\t\t\tconst markerController = MarkerController.get(this._editor);\n\t\t\tif (markerController) {\n\t\t\t\tcontext.statusBar.addAction({\n\t\t\t\t\tlabel: nls.localize('view problem', \"View Problem\"),\n\t\t\t\t\tcommandId: NextMarkerAction.ID,\n\t\t\t\t\trun: () => {\n\t\t\t\t\t\tcontext.hide();\n\t\t\t\t\t\tmarkerController.showAtMarker(markerHover.marker);\n\t\t\t\t\t\tthis._editor.focus();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (!this._editor.getOption(EditorOption.readOnly)) {\n\t\t\tconst quickfixPlaceholderElement = context.statusBar.append($('div'));\n\t\t\tif (this.recentMarkerCodeActionsInfo) {\n\t\t\t\tif (IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker) === IMarkerData.makeKey(markerHover.marker)) {\n\t\t\t\t\tif (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n\t\t\t\t\t\tquickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.recentMarkerCodeActionsInfo = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', \"Checking for quick fixes...\"), 200, disposables);\n\t\t\tif (!quickfixPlaceholderElement.textContent) {\n\t\t\t\t// Have some content in here to avoid flickering\n\t\t\t\tquickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); // \n\t\t\t}\n\t\t\tconst codeActionsPromise = this.getCodeActions(markerHover.marker);\n\t\t\tdisposables.add(toDisposable(() => codeActionsPromise.cancel()));\n\t\t\tcodeActionsPromise.then(actions => {\n\t\t\t\tupdatePlaceholderDisposable.dispose();\n\t\t\t\tthis.recentMarkerCodeActionsInfo = { marker: markerHover.marker, hasCodeActions: actions.validActions.length > 0 };\n\n\t\t\t\tif (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n\t\t\t\t\tactions.dispose();\n\t\t\t\t\tquickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tquickfixPlaceholderElement.style.display = 'none';\n\n\t\t\t\tlet showing = false;\n\t\t\t\tdisposables.add(toDisposable(() => {\n\t\t\t\t\tif (!showing) {\n\t\t\t\t\t\tactions.dispose();\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tcontext.statusBar.addAction({\n\t\t\t\t\tlabel: nls.localize('quick fixes', \"Quick Fix...\"),\n\t\t\t\t\tcommandId: quickFixCommandId,\n\t\t\t\t\trun: (target) => {\n\t\t\t\t\t\tshowing = true;\n\t\t\t\t\t\tconst controller = CodeActionController.get(this._editor);\n\t\t\t\t\t\tconst elementPosition = dom.getDomNodePagePosition(target);\n\t\t\t\t\t\t// Hide the hover pre-emptively, otherwise the editor can close the code actions\n\t\t\t\t\t\t// context menu as well when using keyboard navigation\n\t\t\t\t\t\tcontext.hide();\n\t\t\t\t\t\tcontroller?.showCodeActions(markerCodeActionTrigger, actions, {\n\t\t\t\t\t\t\tx: elementPosition.left,\n\t\t\t\t\t\t\ty: elementPosition.top,\n\t\t\t\t\t\t\twidth: elementPosition.width,\n\t\t\t\t\t\t\theight: elementPosition.height\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst aiCodeAction = actions.validActions.find(action => action.action.isAI);\n\t\t\t\tif (aiCodeAction) {\n\t\t\t\t\tcontext.statusBar.addAction({\n\t\t\t\t\t\tlabel: aiCodeAction.action.title,\n\t\t\t\t\t\tcommandId: aiCodeAction.action.command?.id ?? '',\n\t\t\t\t\t\ticonClass: ThemeIcon.asClassName(Codicon.sparkle),\n\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\tconst controller = CodeActionController.get(this._editor);\n\t\t\t\t\t\t\tcontroller?.applyCodeAction(aiCodeAction, false, false, ApplyCodeActionReason.FromProblemsHover);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Notify that the contents have changed given we added\n\t\t\t\t// actions to the hover\n\t\t\t\t// https://github.com/microsoft/vscode/issues/250424\n\t\t\t\tcontext.onContentsChanged();\n\n\t\t\t}, onUnexpectedError);\n\t\t}\n\t\treturn disposables;\n\t}\n\n\tprivate getCodeActions(marker: IMarker): CancelablePromise<CodeActionSet> {\n\t\treturn createCancelablePromise(cancellationToken => {\n\t\t\treturn getCodeActions(\n\t\t\t\tthis._languageFeaturesService.codeActionProvider,\n\t\t\t\tthis._editor.getModel()!,\n\t\t\t\tnew Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn),\n\t\t\t\tmarkerCodeActionTrigger,\n\t\t\t\tProgress.None,\n\t\t\t\tcancellationToken);\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/hover/browser/markerHoverParticipant.ts"],"names":[],"mappings":"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","file":"markerHoverParticipant.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 { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancelablePromise, createCancelablePromise, disposableTimeout } from '../../../../base/common/async.js';\nimport { onUnexpectedError } from '../../../../base/common/errors.js';\nimport { Disposable, DisposableStore, IDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { basename } from '../../../../base/common/resources.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Range } from '../../../common/core/range.js';\nimport { CodeActionTriggerType } from '../../../common/languages.js';\nimport { IModelDecoration } from '../../../common/model.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { IMarkerDecorationsService } from '../../../common/services/markerDecorations.js';\nimport { ApplyCodeActionReason, getCodeActions, quickFixCommandId } from '../../codeAction/browser/codeAction.js';\nimport { CodeActionController } from '../../codeAction/browser/codeActionController.js';\nimport { CodeActionKind, CodeActionSet, CodeActionTrigger, CodeActionTriggerSource } from '../../codeAction/common/types.js';\nimport { MarkerController, NextMarkerAction } from '../../gotoError/browser/gotoError.js';\nimport { HoverAnchor, HoverAnchorType, IEditorHoverParticipant, IEditorHoverRenderContext, IHoverPart, IRenderedHoverPart, IRenderedHoverParts, RenderedHoverParts } from './hoverTypes.js';\nimport * as nls from '../../../../nls.js';\nimport { ITextEditorOptions } from '../../../../platform/editor/common/editor.js';\nimport { IMarker, IMarkerData, MarkerSeverity } from '../../../../platform/markers/common/markers.js';\nimport { IOpenerService } from '../../../../platform/opener/common/opener.js';\nimport { Progress } from '../../../../platform/progress/common/progress.js';\nimport { ThemeIcon } from '../../../../base/common/themables.js';\nimport { Codicon } from '../../../../base/common/codicons.js';\n\nconst $ = dom.$;\n\nexport class MarkerHover implements IHoverPart {\n\n\tconstructor(\n\t\tpublic readonly owner: IEditorHoverParticipant<MarkerHover>,\n\t\tpublic readonly range: Range,\n\t\tpublic readonly marker: IMarker,\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\nconst markerCodeActionTrigger: CodeActionTrigger = {\n\ttype: CodeActionTriggerType.Invoke,\n\tfilter: { include: CodeActionKind.QuickFix },\n\ttriggerAction: CodeActionTriggerSource.QuickFixHover\n};\n\nexport class MarkerHoverParticipant implements IEditorHoverParticipant<MarkerHover> {\n\n\tpublic readonly hoverOrdinal: number = 1;\n\n\tprivate recentMarkerCodeActionsInfo: { marker: IMarker; hasCodeActions: boolean } | undefined = undefined;\n\n\tconstructor(\n\t\tprivate readonly _editor: ICodeEditor,\n\t\t@IMarkerDecorationsService private readonly _markerDecorationsService: IMarkerDecorationsService,\n\t\t@IOpenerService private readonly _openerService: IOpenerService,\n\t\t@ILanguageFeaturesService private readonly _languageFeaturesService: ILanguageFeaturesService,\n\t) { }\n\n\tpublic computeSync(anchor: HoverAnchor, lineDecorations: IModelDecoration[]): MarkerHover[] {\n\t\tif (!this._editor.hasModel() || anchor.type !== HoverAnchorType.Range && !anchor.supportsMarkerHover) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst model = this._editor.getModel();\n\t\tconst anchorRange = anchor.range;\n\t\tif (!model.isValidRange(anchor.range)) {\n\t\t\treturn [];\n\t\t}\n\t\tconst lineNumber = anchorRange.startLineNumber;\n\t\tconst maxColumn = model.getLineMaxColumn(lineNumber);\n\t\tconst result: MarkerHover[] = [];\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 marker = this._markerDecorationsService.getMarker(model.uri, d);\n\t\t\tif (!marker) {\n\t\t\t\tcontinue;\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 MarkerHover(this, range, marker));\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic renderHoverParts(context: IEditorHoverRenderContext, hoverParts: MarkerHover[]): IRenderedHoverParts<MarkerHover> {\n\t\tif (!hoverParts.length) {\n\t\t\treturn new RenderedHoverParts([]);\n\t\t}\n\t\tconst renderedHoverParts: IRenderedHoverPart<MarkerHover>[] = [];\n\t\thoverParts.forEach(hoverPart => {\n\t\t\tconst renderedMarkerHover = this._renderMarkerHover(hoverPart);\n\t\t\tcontext.fragment.appendChild(renderedMarkerHover.hoverElement);\n\t\t\trenderedHoverParts.push(renderedMarkerHover);\n\t\t});\n\t\tconst markerHoverForStatusbar = hoverParts.length === 1 ? hoverParts[0] : hoverParts.sort((a, b) => MarkerSeverity.compare(a.marker.severity, b.marker.severity))[0];\n\t\tconst disposables = this._renderMarkerStatusbar(context, markerHoverForStatusbar);\n\t\treturn new RenderedHoverParts(renderedHoverParts, disposables);\n\t}\n\n\tpublic getAccessibleContent(hoverPart: MarkerHover): string {\n\t\treturn hoverPart.marker.message;\n\t}\n\n\tprivate _renderMarkerHover(markerHover: MarkerHover): IRenderedHoverPart<MarkerHover> {\n\t\tconst disposables: DisposableStore = new DisposableStore();\n\t\tconst hoverElement = $('div.hover-row');\n\t\tconst markerElement = dom.append(hoverElement, $('div.marker.hover-contents'));\n\t\tconst { source, message, code, relatedInformation } = markerHover.marker;\n\n\t\tthis._editor.applyFontInfo(markerElement);\n\t\tconst messageElement = dom.append(markerElement, $('span'));\n\t\tmessageElement.style.whiteSpace = 'pre-wrap';\n\t\tmessageElement.innerText = message;\n\n\t\tif (source || code) {\n\t\t\t// Code has link\n\t\t\tif (code && typeof code !== 'string') {\n\t\t\t\tconst sourceAndCodeElement = $('span');\n\t\t\t\tif (source) {\n\t\t\t\t\tconst sourceElement = dom.append(sourceAndCodeElement, $('span'));\n\t\t\t\t\tsourceElement.innerText = source;\n\t\t\t\t}\n\t\t\t\tconst codeLink = dom.append(sourceAndCodeElement, $('a.code-link'));\n\t\t\t\tcodeLink.setAttribute('href', code.target.toString(true));\n\n\t\t\t\tdisposables.add(dom.addDisposableListener(codeLink, 'click', (e) => {\n\t\t\t\t\tthis._openerService.open(code.target, { allowCommands: true });\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t}));\n\n\t\t\t\tconst codeElement = dom.append(codeLink, $('span'));\n\t\t\t\tcodeElement.innerText = code.value;\n\n\t\t\t\tconst detailsElement = dom.append(markerElement, sourceAndCodeElement);\n\t\t\t\tdetailsElement.style.opacity = '0.6';\n\t\t\t\tdetailsElement.style.paddingLeft = '6px';\n\t\t\t} else {\n\t\t\t\tconst detailsElement = dom.append(markerElement, $('span'));\n\t\t\t\tdetailsElement.style.opacity = '0.6';\n\t\t\t\tdetailsElement.style.paddingLeft = '6px';\n\t\t\t\tdetailsElement.innerText = source && code ? `${source}(${code})` : source ? source : `(${code})`;\n\t\t\t}\n\t\t}\n\n\t\tif (isNonEmptyArray(relatedInformation)) {\n\t\t\tfor (const { message, resource, startLineNumber, startColumn } of relatedInformation) {\n\t\t\t\tconst relatedInfoContainer = dom.append(markerElement, $('div'));\n\t\t\t\trelatedInfoContainer.style.marginTop = '8px';\n\t\t\t\tconst a = dom.append(relatedInfoContainer, $('a'));\n\t\t\t\ta.innerText = `${basename(resource)}(${startLineNumber}, ${startColumn}): `;\n\t\t\t\ta.style.cursor = 'pointer';\n\t\t\t\tdisposables.add(dom.addDisposableListener(a, 'click', (e) => {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\te.preventDefault();\n\t\t\t\t\tif (this._openerService) {\n\t\t\t\t\t\tconst editorOptions: ITextEditorOptions = { selection: { startLineNumber, startColumn } };\n\t\t\t\t\t\tthis._openerService.open(resource, {\n\t\t\t\t\t\t\tfromUserGesture: true,\n\t\t\t\t\t\t\teditorOptions\n\t\t\t\t\t\t}).catch(onUnexpectedError);\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\t\tconst messageElement = dom.append<HTMLAnchorElement>(relatedInfoContainer, $('span'));\n\t\t\t\tmessageElement.innerText = message;\n\t\t\t\tthis._editor.applyFontInfo(messageElement);\n\t\t\t}\n\t\t}\n\n\t\tconst renderedHoverPart: IRenderedHoverPart<MarkerHover> = {\n\t\t\thoverPart: markerHover,\n\t\t\thoverElement,\n\t\t\tdispose: () => disposables.dispose()\n\t\t};\n\t\treturn renderedHoverPart;\n\t}\n\n\tprivate _renderMarkerStatusbar(context: IEditorHoverRenderContext, markerHover: MarkerHover): IDisposable {\n\t\tconst disposables = new DisposableStore();\n\t\tif (markerHover.marker.severity === MarkerSeverity.Error || markerHover.marker.severity === MarkerSeverity.Warning || markerHover.marker.severity === MarkerSeverity.Info) {\n\t\t\tconst markerController = MarkerController.get(this._editor);\n\t\t\tif (markerController) {\n\t\t\t\tcontext.statusBar.addAction({\n\t\t\t\t\tlabel: nls.localize('view problem', \"View Problem\"),\n\t\t\t\t\tcommandId: NextMarkerAction.ID,\n\t\t\t\t\trun: () => {\n\t\t\t\t\t\tcontext.hide();\n\t\t\t\t\t\tmarkerController.showAtMarker(markerHover.marker);\n\t\t\t\t\t\tthis._editor.focus();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (!this._editor.getOption(EditorOption.readOnly)) {\n\t\t\tconst quickfixPlaceholderElement = context.statusBar.append($('div'));\n\t\t\tif (this.recentMarkerCodeActionsInfo) {\n\t\t\t\tif (IMarkerData.makeKey(this.recentMarkerCodeActionsInfo.marker) === IMarkerData.makeKey(markerHover.marker)) {\n\t\t\t\t\tif (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n\t\t\t\t\t\tquickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tthis.recentMarkerCodeActionsInfo = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst updatePlaceholderDisposable = this.recentMarkerCodeActionsInfo && !this.recentMarkerCodeActionsInfo.hasCodeActions ? Disposable.None : disposableTimeout(() => quickfixPlaceholderElement.textContent = nls.localize('checkingForQuickFixes', \"Checking for quick fixes...\"), 200, disposables);\n\t\t\tif (!quickfixPlaceholderElement.textContent) {\n\t\t\t\t// Have some content in here to avoid flickering\n\t\t\t\tquickfixPlaceholderElement.textContent = String.fromCharCode(0xA0); // \n\t\t\t}\n\t\t\tconst codeActionsPromise = this.getCodeActions(markerHover.marker);\n\t\t\tdisposables.add(toDisposable(() => codeActionsPromise.cancel()));\n\t\t\tcodeActionsPromise.then(actions => {\n\t\t\t\tupdatePlaceholderDisposable.dispose();\n\t\t\t\tthis.recentMarkerCodeActionsInfo = { marker: markerHover.marker, hasCodeActions: actions.validActions.length > 0 };\n\n\t\t\t\tif (!this.recentMarkerCodeActionsInfo.hasCodeActions) {\n\t\t\t\t\tactions.dispose();\n\t\t\t\t\tquickfixPlaceholderElement.textContent = nls.localize('noQuickFixes', \"No quick fixes available\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tquickfixPlaceholderElement.style.display = 'none';\n\n\t\t\t\tlet showing = false;\n\t\t\t\tdisposables.add(toDisposable(() => {\n\t\t\t\t\tif (!showing) {\n\t\t\t\t\t\tactions.dispose();\n\t\t\t\t\t}\n\t\t\t\t}));\n\n\t\t\t\tcontext.statusBar.addAction({\n\t\t\t\t\tlabel: nls.localize('quick fixes', \"Quick Fix...\"),\n\t\t\t\t\tcommandId: quickFixCommandId,\n\t\t\t\t\trun: (target) => {\n\t\t\t\t\t\tshowing = true;\n\t\t\t\t\t\tconst controller = CodeActionController.get(this._editor);\n\t\t\t\t\t\tconst elementPosition = dom.getDomNodePagePosition(target);\n\t\t\t\t\t\t// Hide the hover pre-emptively, otherwise the editor can close the code actions\n\t\t\t\t\t\t// context menu as well when using keyboard navigation\n\t\t\t\t\t\tcontext.hide();\n\t\t\t\t\t\tcontroller?.showCodeActions(markerCodeActionTrigger, actions, {\n\t\t\t\t\t\t\tx: elementPosition.left,\n\t\t\t\t\t\t\ty: elementPosition.top,\n\t\t\t\t\t\t\twidth: elementPosition.width,\n\t\t\t\t\t\t\theight: elementPosition.height\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tconst aiCodeAction = actions.validActions.find(action => action.action.isAI);\n\t\t\t\tif (aiCodeAction) {\n\t\t\t\t\tcontext.statusBar.addAction({\n\t\t\t\t\t\tlabel: aiCodeAction.action.title,\n\t\t\t\t\t\tcommandId: aiCodeAction.action.command?.id ?? '',\n\t\t\t\t\t\ticonClass: ThemeIcon.asClassName(Codicon.sparkle),\n\t\t\t\t\t\trun: () => {\n\t\t\t\t\t\t\tconst controller = CodeActionController.get(this._editor);\n\t\t\t\t\t\t\tcontroller?.applyCodeAction(aiCodeAction, false, false, ApplyCodeActionReason.FromProblemsHover);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// Notify that the contents have changed given we added\n\t\t\t\t// actions to the hover\n\t\t\t\t// https://github.com/microsoft/vscode/issues/250424\n\t\t\t\tcontext.onContentsChanged();\n\n\t\t\t}, onUnexpectedError);\n\t\t}\n\t\treturn disposables;\n\t}\n\n\tprivate getCodeActions(marker: IMarker): CancelablePromise<CodeActionSet> {\n\t\treturn createCancelablePromise(cancellationToken => {\n\t\t\treturn getCodeActions(\n\t\t\t\tthis._languageFeaturesService.codeActionProvider,\n\t\t\t\tthis._editor.getModel()!,\n\t\t\t\tnew Range(marker.startLineNumber, marker.startColumn, marker.endLineNumber, marker.endColumn),\n\t\t\t\tmarkerCodeActionTrigger,\n\t\t\t\tProgress.None,\n\t\t\t\tcancellationToken);\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(1239, "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(1240, "Replace with Next Value"),
|
|
132
132
|
precondition: EditorContextKeys.writable,
|
|
133
133
|
kbOpts: {
|
|
134
134
|
kbExpr: EditorContextKeys.editorTextFocus,
|
|
@@ -13,27 +13,27 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
13
13
|
};
|
|
14
14
|
import { DisposableStore } from '../../../../base/common/lifecycle.js';
|
|
15
15
|
import * as strings from '../../../../base/common/strings.js';
|
|
16
|
+
import * as nls from '../../../../nls.js';
|
|
17
|
+
import { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';
|
|
16
18
|
import { EditorAction, registerEditorAction, registerEditorContribution } from '../../../browser/editorExtensions.js';
|
|
17
19
|
import { ShiftCommand } from '../../../common/commands/shiftCommand.js';
|
|
18
20
|
import { Range } from '../../../common/core/range.js';
|
|
19
21
|
import { EditorContextKeys } from '../../../common/editorContextKeys.js';
|
|
22
|
+
import { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';
|
|
20
23
|
import { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';
|
|
21
24
|
import { IModelService } from '../../../common/services/model.js';
|
|
22
|
-
import * as indentUtils from '../common/indentUtils.js';
|
|
23
|
-
import * as nls from '../../../../nls.js';
|
|
24
|
-
import { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';
|
|
25
|
-
import { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';
|
|
26
|
-
import { getReindentEditOperations } from '../common/indentation.js';
|
|
27
25
|
import { getStandardTokenTypeAtPosition } from '../../../common/tokens/lineTokens.js';
|
|
26
|
+
import { getReindentEditOperations } from '../common/indentation.js';
|
|
27
|
+
import * as indentUtils from '../common/indentUtils.js';
|
|
28
28
|
export class IndentationToSpacesAction extends EditorAction {
|
|
29
29
|
static { this.ID = 'editor.action.indentationToSpaces'; }
|
|
30
30
|
constructor() {
|
|
31
31
|
super({
|
|
32
32
|
id: IndentationToSpacesAction.ID,
|
|
33
|
-
label: nls.localize2(
|
|
33
|
+
label: nls.localize2(1147, "Convert Indentation to Spaces"),
|
|
34
34
|
precondition: EditorContextKeys.writable,
|
|
35
35
|
metadata: {
|
|
36
|
-
description: nls.localize2(
|
|
36
|
+
description: nls.localize2(1148, "Convert the tab indentation to spaces."),
|
|
37
37
|
}
|
|
38
38
|
});
|
|
39
39
|
}
|
|
@@ -61,10 +61,10 @@ export class IndentationToTabsAction extends EditorAction {
|
|
|
61
61
|
constructor() {
|
|
62
62
|
super({
|
|
63
63
|
id: IndentationToTabsAction.ID,
|
|
64
|
-
label: nls.localize2(
|
|
64
|
+
label: nls.localize2(1149, "Convert Indentation to Tabs"),
|
|
65
65
|
precondition: EditorContextKeys.writable,
|
|
66
66
|
metadata: {
|
|
67
|
-
description: nls.localize2(
|
|
67
|
+
description: nls.localize2(1150, "Convert the spaces indentation to tabs."),
|
|
68
68
|
}
|
|
69
69
|
});
|
|
70
70
|
}
|
|
@@ -107,17 +107,17 @@ export class ChangeIndentationSizeAction extends EditorAction {
|
|
|
107
107
|
label: n.toString(),
|
|
108
108
|
// add description for tabSize value set in the configuration
|
|
109
109
|
description: (n === creationOpts.tabSize && n === modelOpts.tabSize
|
|
110
|
-
? nls.localize(
|
|
110
|
+
? nls.localize(1143, "Configured Tab Size")
|
|
111
111
|
: n === creationOpts.tabSize
|
|
112
|
-
? nls.localize(
|
|
112
|
+
? nls.localize(1144, "Default Tab Size")
|
|
113
113
|
: n === modelOpts.tabSize
|
|
114
|
-
? nls.localize(
|
|
114
|
+
? nls.localize(1145, "Current Tab Size")
|
|
115
115
|
: undefined)
|
|
116
116
|
}));
|
|
117
117
|
// auto focus the tabSize set for the current editor
|
|
118
118
|
const autoFocusIndex = Math.min(model.getOptions().tabSize - 1, 7);
|
|
119
119
|
setTimeout(() => {
|
|
120
|
-
quickInputService.pick(picks, { placeHolder: nls.localize(
|
|
120
|
+
quickInputService.pick(picks, { placeHolder: nls.localize(1146, "Select Tab Size for Current File"), activeItem: picks[autoFocusIndex] }).then(pick => {
|
|
121
121
|
if (pick) {
|
|
122
122
|
if (model && !model.isDisposed()) {
|
|
123
123
|
const pickedVal = parseInt(pick.label, 10);
|
|
@@ -144,10 +144,10 @@ export class IndentUsingTabs extends ChangeIndentationSizeAction {
|
|
|
144
144
|
constructor() {
|
|
145
145
|
super(false, false, {
|
|
146
146
|
id: IndentUsingTabs.ID,
|
|
147
|
-
label: nls.localize2(
|
|
147
|
+
label: nls.localize2(1151, "Indent Using Tabs"),
|
|
148
148
|
precondition: undefined,
|
|
149
149
|
metadata: {
|
|
150
|
-
description: nls.localize2(
|
|
150
|
+
description: nls.localize2(1152, "Use indentation with tabs."),
|
|
151
151
|
}
|
|
152
152
|
});
|
|
153
153
|
}
|
|
@@ -157,10 +157,10 @@ export class IndentUsingSpaces extends ChangeIndentationSizeAction {
|
|
|
157
157
|
constructor() {
|
|
158
158
|
super(true, false, {
|
|
159
159
|
id: IndentUsingSpaces.ID,
|
|
160
|
-
label: nls.localize2(
|
|
160
|
+
label: nls.localize2(1153, "Indent Using Spaces"),
|
|
161
161
|
precondition: undefined,
|
|
162
162
|
metadata: {
|
|
163
|
-
description: nls.localize2(
|
|
163
|
+
description: nls.localize2(1154, "Use indentation with spaces."),
|
|
164
164
|
}
|
|
165
165
|
});
|
|
166
166
|
}
|
|
@@ -170,10 +170,10 @@ export class ChangeTabDisplaySize extends ChangeIndentationSizeAction {
|
|
|
170
170
|
constructor() {
|
|
171
171
|
super(true, true, {
|
|
172
172
|
id: ChangeTabDisplaySize.ID,
|
|
173
|
-
label: nls.localize2(
|
|
173
|
+
label: nls.localize2(1155, "Change Tab Display Size"),
|
|
174
174
|
precondition: undefined,
|
|
175
175
|
metadata: {
|
|
176
|
-
description: nls.localize2(
|
|
176
|
+
description: nls.localize2(1156, "Change the space size equivalent of the tab."),
|
|
177
177
|
}
|
|
178
178
|
});
|
|
179
179
|
}
|
|
@@ -183,10 +183,10 @@ export class DetectIndentation extends EditorAction {
|
|
|
183
183
|
constructor() {
|
|
184
184
|
super({
|
|
185
185
|
id: DetectIndentation.ID,
|
|
186
|
-
label: nls.localize2(
|
|
186
|
+
label: nls.localize2(1157, "Detect Indentation from Content"),
|
|
187
187
|
precondition: undefined,
|
|
188
188
|
metadata: {
|
|
189
|
-
description: nls.localize2(
|
|
189
|
+
description: nls.localize2(1158, "Detect the indentation from content."),
|
|
190
190
|
}
|
|
191
191
|
});
|
|
192
192
|
}
|
|
@@ -204,11 +204,12 @@ export class ReindentLinesAction extends EditorAction {
|
|
|
204
204
|
constructor() {
|
|
205
205
|
super({
|
|
206
206
|
id: 'editor.action.reindentlines',
|
|
207
|
-
label: nls.localize2(
|
|
207
|
+
label: nls.localize2(1159, "Reindent Lines"),
|
|
208
208
|
precondition: EditorContextKeys.writable,
|
|
209
209
|
metadata: {
|
|
210
|
-
description: nls.localize2(
|
|
211
|
-
}
|
|
210
|
+
description: nls.localize2(1160, "Reindent the lines of the editor."),
|
|
211
|
+
},
|
|
212
|
+
canTriggerInlineEdits: true,
|
|
212
213
|
});
|
|
213
214
|
}
|
|
214
215
|
run(accessor, editor) {
|
|
@@ -229,11 +230,12 @@ export class ReindentSelectedLinesAction extends EditorAction {
|
|
|
229
230
|
constructor() {
|
|
230
231
|
super({
|
|
231
232
|
id: 'editor.action.reindentselectedlines',
|
|
232
|
-
label: nls.localize2(
|
|
233
|
+
label: nls.localize2(1161, "Reindent Selected Lines"),
|
|
233
234
|
precondition: EditorContextKeys.writable,
|
|
234
235
|
metadata: {
|
|
235
|
-
description: nls.localize2(
|
|
236
|
-
}
|
|
236
|
+
description: nls.localize2(1162, "Reindent the selected lines of the editor."),
|
|
237
|
+
},
|
|
238
|
+
canTriggerInlineEdits: true,
|
|
237
239
|
});
|
|
238
240
|
}
|
|
239
241
|
run(accessor, editor) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["vs/editor/contrib/indentation/browser/indentation.ts"],"names":[],"mappings":"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","file":"indentation.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 { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, IActionOptions, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { EditorAutoIndentStrategy, EditorOption } from '../../../common/config/editorOptions.js';\nimport { ISingleEditOperation } from '../../../common/core/editOperation.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ICommand, ICursorStateComputerData, IEditOperationBuilder, IEditorContribution } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { EndOfLineSequence, ITextModel } from '../../../common/model.js';\nimport { TextEdit } from '../../../common/languages.js';\nimport { StandardTokenType } from '../../../common/encodedTokenAttributes.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IndentConsts } from '../../../common/languages/supports/indentRules.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport * as indentUtils from '../common/indentUtils.js';\nimport * as nls from '../../../../nls.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';\nimport { getReindentEditOperations } from '../common/indentation.js';\nimport { getStandardTokenTypeAtPosition } from '../../../common/tokens/lineTokens.js';\nimport { Position } from '../../../common/core/position.js';\n\nexport class IndentationToSpacesAction extends EditorAction {\n\tpublic static readonly ID = 'editor.action.indentationToSpaces';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: IndentationToSpacesAction.ID,\n\t\t\tlabel: nls.localize2('indentationToSpaces', \"Convert Indentation to Spaces\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentationToSpacesDescription', \"Convert the tab indentation to spaces.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst modelOpts = model.getOptions();\n\t\tconst selection = editor.getSelection();\n\t\tif (!selection) {\n\t\t\treturn;\n\t\t}\n\t\tconst command = new IndentationToSpacesCommand(selection, modelOpts.tabSize);\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, [command]);\n\t\teditor.pushUndoStop();\n\n\t\tmodel.updateOptions({\n\t\t\tinsertSpaces: true\n\t\t});\n\t}\n}\n\nexport class IndentationToTabsAction extends EditorAction {\n\tpublic static readonly ID = 'editor.action.indentationToTabs';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: IndentationToTabsAction.ID,\n\t\t\tlabel: nls.localize2('indentationToTabs', \"Convert Indentation to Tabs\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentationToTabsDescription', \"Convert the spaces indentation to tabs.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst modelOpts = model.getOptions();\n\t\tconst selection = editor.getSelection();\n\t\tif (!selection) {\n\t\t\treturn;\n\t\t}\n\t\tconst command = new IndentationToTabsCommand(selection, modelOpts.tabSize);\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, [command]);\n\t\teditor.pushUndoStop();\n\n\t\tmodel.updateOptions({\n\t\t\tinsertSpaces: false\n\t\t});\n\t}\n}\n\nexport class ChangeIndentationSizeAction extends EditorAction {\n\n\tconstructor(private readonly insertSpaces: boolean, private readonly displaySizeOnly: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst modelService = accessor.get(IModelService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n\t\tconst modelOpts = model.getOptions();\n\t\tconst picks = [1, 2, 3, 4, 5, 6, 7, 8].map(n => ({\n\t\t\tid: n.toString(),\n\t\t\tlabel: n.toString(),\n\t\t\t// add description for tabSize value set in the configuration\n\t\t\tdescription: (\n\t\t\t\tn === creationOpts.tabSize && n === modelOpts.tabSize\n\t\t\t\t\t? nls.localize('configuredTabSize', \"Configured Tab Size\")\n\t\t\t\t\t: n === creationOpts.tabSize\n\t\t\t\t\t\t? nls.localize('defaultTabSize', \"Default Tab Size\")\n\t\t\t\t\t\t: n === modelOpts.tabSize\n\t\t\t\t\t\t\t? nls.localize('currentTabSize', \"Current Tab Size\")\n\t\t\t\t\t\t\t: undefined\n\t\t\t)\n\t\t}));\n\n\t\t// auto focus the tabSize set for the current editor\n\t\tconst autoFocusIndex = Math.min(model.getOptions().tabSize - 1, 7);\n\n\t\tsetTimeout(() => {\n\t\t\tquickInputService.pick(picks, { placeHolder: nls.localize({ key: 'selectTabWidth', comment: ['Tab corresponds to the tab key'] }, \"Select Tab Size for Current File\"), activeItem: picks[autoFocusIndex] }).then(pick => {\n\t\t\t\tif (pick) {\n\t\t\t\t\tif (model && !model.isDisposed()) {\n\t\t\t\t\t\tconst pickedVal = parseInt(pick.label, 10);\n\t\t\t\t\t\tif (this.displaySizeOnly) {\n\t\t\t\t\t\t\tmodel.updateOptions({\n\t\t\t\t\t\t\t\ttabSize: pickedVal\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmodel.updateOptions({\n\t\t\t\t\t\t\t\ttabSize: pickedVal,\n\t\t\t\t\t\t\t\tindentSize: pickedVal,\n\t\t\t\t\t\t\t\tinsertSpaces: this.insertSpaces\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 50/* quick input is sensitive to being opened so soon after another */);\n\t}\n}\n\nexport class IndentUsingTabs extends ChangeIndentationSizeAction {\n\n\tpublic static readonly ID = 'editor.action.indentUsingTabs';\n\n\tconstructor() {\n\t\tsuper(false, false, {\n\t\t\tid: IndentUsingTabs.ID,\n\t\t\tlabel: nls.localize2('indentUsingTabs', \"Indent Using Tabs\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentUsingTabsDescription', \"Use indentation with tabs.\"),\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class IndentUsingSpaces extends ChangeIndentationSizeAction {\n\n\tpublic static readonly ID = 'editor.action.indentUsingSpaces';\n\n\tconstructor() {\n\t\tsuper(true, false, {\n\t\t\tid: IndentUsingSpaces.ID,\n\t\t\tlabel: nls.localize2('indentUsingSpaces', \"Indent Using Spaces\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentUsingSpacesDescription', \"Use indentation with spaces.\"),\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class ChangeTabDisplaySize extends ChangeIndentationSizeAction {\n\n\tpublic static readonly ID = 'editor.action.changeTabDisplaySize';\n\n\tconstructor() {\n\t\tsuper(true, true, {\n\t\t\tid: ChangeTabDisplaySize.ID,\n\t\t\tlabel: nls.localize2('changeTabDisplaySize', \"Change Tab Display Size\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('changeTabDisplaySizeDescription', \"Change the space size equivalent of the tab.\"),\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class DetectIndentation extends EditorAction {\n\n\tpublic static readonly ID = 'editor.action.detectIndentation';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: DetectIndentation.ID,\n\t\t\tlabel: nls.localize2('detectIndentation', \"Detect Indentation from Content\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('detectIndentationDescription', \"Detect the indentation from content.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst modelService = accessor.get(IModelService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n\t\tmodel.detectIndentation(creationOpts.insertSpaces, creationOpts.tabSize);\n\t}\n}\n\nexport class ReindentLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.reindentlines',\n\t\t\tlabel: nls.localize2('editor.reindentlines', \"Reindent Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('editor.reindentlinesDescription', \"Reindent the lines of the editor.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst edits = getReindentEditOperations(model, languageConfigurationService, 1, model.getLineCount());\n\t\tif (edits.length > 0) {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeEdits(this.id, edits);\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t}\n}\n\nexport class ReindentSelectedLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.reindentselectedlines',\n\t\t\tlabel: nls.localize2('editor.reindentselectedlines', \"Reindent Selected Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('editor.reindentselectedlinesDescription', \"Reindent the selected lines of the editor.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\n\t\tfor (const selection of selections) {\n\t\t\tlet startLineNumber = selection.startLineNumber;\n\t\t\tlet endLineNumber = selection.endLineNumber;\n\n\t\t\tif (startLineNumber !== endLineNumber && selection.endColumn === 1) {\n\t\t\t\tendLineNumber--;\n\t\t\t}\n\n\t\t\tif (startLineNumber === 1) {\n\t\t\t\tif (startLineNumber === endLineNumber) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstartLineNumber--;\n\t\t\t}\n\n\t\t\tconst editOperations = getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber);\n\t\t\tedits.push(...editOperations);\n\t\t}\n\n\t\tif (edits.length > 0) {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeEdits(this.id, edits);\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t}\n}\n\nexport class AutoIndentOnPasteCommand implements ICommand {\n\n\tprivate readonly _edits: { range: IRange; text: string; eol?: EndOfLineSequence }[];\n\n\tprivate readonly _initialSelection: Selection;\n\tprivate _selectionId: string | null;\n\n\tconstructor(edits: TextEdit[], initialSelection: Selection) {\n\t\tthis._initialSelection = initialSelection;\n\t\tthis._edits = [];\n\t\tthis._selectionId = null;\n\n\t\tfor (const edit of edits) {\n\t\t\tif (edit.range && typeof edit.text === 'string') {\n\t\t\t\tthis._edits.push(edit as { range: IRange; text: string; eol?: EndOfLineSequence });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void {\n\t\tfor (const edit of this._edits) {\n\t\t\tbuilder.addEditOperation(Range.lift(edit.range), edit.text);\n\t\t}\n\n\t\tlet selectionIsSet = false;\n\t\tif (Array.isArray(this._edits) && this._edits.length === 1 && this._initialSelection.isEmpty()) {\n\t\t\tif (this._edits[0].range.startColumn === this._initialSelection.endColumn &&\n\t\t\t\tthis._edits[0].range.startLineNumber === this._initialSelection.endLineNumber) {\n\t\t\t\tselectionIsSet = true;\n\t\t\t\tthis._selectionId = builder.trackSelection(this._initialSelection, true);\n\t\t\t} else if (this._edits[0].range.endColumn === this._initialSelection.startColumn &&\n\t\t\t\tthis._edits[0].range.endLineNumber === this._initialSelection.startLineNumber) {\n\t\t\t\tselectionIsSet = true;\n\t\t\t\tthis._selectionId = builder.trackSelection(this._initialSelection, false);\n\t\t\t}\n\t\t}\n\n\t\tif (!selectionIsSet) {\n\t\t\tthis._selectionId = builder.trackSelection(this._initialSelection);\n\t\t}\n\t}\n\n\tpublic computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection {\n\t\treturn helper.getTrackedSelection(this._selectionId!);\n\t}\n}\n\nexport class AutoIndentOnPaste implements IEditorContribution {\n\tpublic static readonly ID = 'editor.contrib.autoIndentOnPaste';\n\n\tprivate readonly callOnDispose = new DisposableStore();\n\tprivate readonly callOnModel = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService\n\t) {\n\n\t\tthis.callOnDispose.add(editor.onDidChangeConfiguration(() => this.update()));\n\t\tthis.callOnDispose.add(editor.onDidChangeModel(() => this.update()));\n\t\tthis.callOnDispose.add(editor.onDidChangeModelLanguage(() => this.update()));\n\t}\n\n\tprivate update(): void {\n\n\t\t// clean up\n\t\tthis.callOnModel.clear();\n\n\t\t// we are disabled\n\t\tif (!this.editor.getOption(EditorOption.autoIndentOnPaste) || this.editor.getOption(EditorOption.autoIndent) < EditorAutoIndentStrategy.Full) {\n\t\t\treturn;\n\t\t}\n\n\t\t// no model\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.callOnModel.add(this.editor.onDidPaste(({ range }) => {\n\t\t\tthis.trigger(range);\n\t\t}));\n\t}\n\n\tpublic trigger(range: Range): void {\n\t\tconst selections = this.editor.getSelections();\n\t\tif (selections === null || selections.length > 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst containsOnlyWhitespace = this.rangeContainsOnlyWhitespaceCharacters(model, range);\n\t\tif (containsOnlyWhitespace) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.editor.getOption(EditorOption.autoIndentOnPasteWithinString) && isStartOrEndInString(model, range)) {\n\t\t\treturn;\n\t\t}\n\t\tif (!model.tokenization.isCheapToTokenize(range.getStartPosition().lineNumber)) {\n\t\t\treturn;\n\t\t}\n\t\tconst autoIndent = this.editor.getOption(EditorOption.autoIndent);\n\t\tconst { tabSize, indentSize, insertSpaces } = model.getOptions();\n\t\tconst textEdits: TextEdit[] = [];\n\n\t\tconst indentConverter = {\n\t\t\tshiftIndent: (indentation: string) => {\n\t\t\t\treturn ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n\t\t\t},\n\t\t\tunshiftIndent: (indentation: string) => {\n\t\t\t\treturn ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n\t\t\t}\n\t\t};\n\n\t\tlet startLineNumber = range.startLineNumber;\n\n\t\tlet firstLineText = model.getLineContent(startLineNumber);\n\t\tif (!/\\S/.test(firstLineText.substring(0, range.startColumn - 1))) {\n\t\t\tconst indentOfFirstLine = getGoodIndentForLine(autoIndent, model, model.getLanguageId(), startLineNumber, indentConverter, this._languageConfigurationService);\n\n\t\t\tif (indentOfFirstLine !== null) {\n\t\t\t\tconst oldIndentation = strings.getLeadingWhitespace(firstLineText);\n\t\t\t\tconst newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\n\t\t\t\tconst oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n\n\t\t\t\tif (newSpaceCnt !== oldSpaceCnt) {\n\t\t\t\t\tconst newIndent = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n\t\t\t\t\ttextEdits.push({\n\t\t\t\t\t\trange: new Range(startLineNumber, 1, startLineNumber, oldIndentation.length + 1),\n\t\t\t\t\t\ttext: newIndent\n\t\t\t\t\t});\n\t\t\t\t\tfirstLineText = newIndent + firstLineText.substring(oldIndentation.length);\n\t\t\t\t} else {\n\t\t\t\t\tconst indentMetadata = getIndentMetadata(model, startLineNumber, this._languageConfigurationService);\n\n\t\t\t\t\tif (indentMetadata === 0 || indentMetadata === IndentConsts.UNINDENT_MASK) {\n\t\t\t\t\t\t// we paste content into a line where only contains whitespaces\n\t\t\t\t\t\t// after pasting, the indentation of the first line is already correct\n\t\t\t\t\t\t// the first line doesn't match any indentation rule\n\t\t\t\t\t\t// then no-op.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst firstLineNumber = startLineNumber;\n\n\t\t// ignore empty or ignored lines\n\t\twhile (startLineNumber < range.endLineNumber) {\n\t\t\tif (!/\\S/.test(model.getLineContent(startLineNumber + 1))) {\n\t\t\t\tstartLineNumber++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tif (startLineNumber !== range.endLineNumber) {\n\t\t\tconst virtualModel = {\n\t\t\t\ttokenization: {\n\t\t\t\t\tgetLineTokens: (lineNumber: number) => {\n\t\t\t\t\t\treturn model.tokenization.getLineTokens(lineNumber);\n\t\t\t\t\t},\n\t\t\t\t\tgetLanguageId: () => {\n\t\t\t\t\t\treturn model.getLanguageId();\n\t\t\t\t\t},\n\t\t\t\t\tgetLanguageIdAtPosition: (lineNumber: number, column: number) => {\n\t\t\t\t\t\treturn model.getLanguageIdAtPosition(lineNumber, column);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tgetLineContent: (lineNumber: number) => {\n\t\t\t\t\tif (lineNumber === firstLineNumber) {\n\t\t\t\t\t\treturn firstLineText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn model.getLineContent(lineNumber);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst indentOfSecondLine = getGoodIndentForLine(autoIndent, virtualModel, model.getLanguageId(), startLineNumber + 1, indentConverter, this._languageConfigurationService);\n\t\t\tif (indentOfSecondLine !== null) {\n\t\t\t\tconst newSpaceCntOfSecondLine = indentUtils.getSpaceCnt(indentOfSecondLine, tabSize);\n\t\t\t\tconst oldSpaceCntOfSecondLine = indentUtils.getSpaceCnt(strings.getLeadingWhitespace(model.getLineContent(startLineNumber + 1)), tabSize);\n\n\t\t\t\tif (newSpaceCntOfSecondLine !== oldSpaceCntOfSecondLine) {\n\t\t\t\t\tconst spaceCntOffset = newSpaceCntOfSecondLine - oldSpaceCntOfSecondLine;\n\t\t\t\t\tfor (let i = startLineNumber + 1; i <= range.endLineNumber; i++) {\n\t\t\t\t\t\tconst lineContent = model.getLineContent(i);\n\t\t\t\t\t\tconst originalIndent = strings.getLeadingWhitespace(lineContent);\n\t\t\t\t\t\tconst originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\n\t\t\t\t\t\tconst newSpacesCnt = originalSpacesCnt + spaceCntOffset;\n\t\t\t\t\t\tconst newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\n\n\t\t\t\t\t\tif (newIndent !== originalIndent) {\n\t\t\t\t\t\t\ttextEdits.push({\n\t\t\t\t\t\t\t\trange: new Range(i, 1, i, originalIndent.length + 1),\n\t\t\t\t\t\t\t\ttext: newIndent\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (textEdits.length > 0) {\n\t\t\tthis.editor.pushUndoStop();\n\t\t\tconst cmd = new AutoIndentOnPasteCommand(textEdits, this.editor.getSelection()!);\n\t\t\tthis.editor.executeCommand('autoIndentOnPaste', cmd);\n\t\t\tthis.editor.pushUndoStop();\n\t\t}\n\t}\n\n\tprivate rangeContainsOnlyWhitespaceCharacters(model: ITextModel, range: Range): boolean {\n\t\tconst lineContainsOnlyWhitespace = (content: string): boolean => {\n\t\t\treturn content.trim().length === 0;\n\t\t};\n\t\tlet containsOnlyWhitespace: boolean = true;\n\t\tif (range.startLineNumber === range.endLineNumber) {\n\t\t\tconst lineContent = model.getLineContent(range.startLineNumber);\n\t\t\tconst linePart = lineContent.substring(range.startColumn - 1, range.endColumn - 1);\n\t\t\tcontainsOnlyWhitespace = lineContainsOnlyWhitespace(linePart);\n\t\t} else {\n\t\t\tfor (let i = range.startLineNumber; i <= range.endLineNumber; i++) {\n\t\t\t\tconst lineContent = model.getLineContent(i);\n\t\t\t\tif (i === range.startLineNumber) {\n\t\t\t\t\tconst linePart = lineContent.substring(range.startColumn - 1);\n\t\t\t\t\tcontainsOnlyWhitespace = lineContainsOnlyWhitespace(linePart);\n\t\t\t\t} else if (i === range.endLineNumber) {\n\t\t\t\t\tconst linePart = lineContent.substring(0, range.endColumn - 1);\n\t\t\t\t\tcontainsOnlyWhitespace = lineContainsOnlyWhitespace(linePart);\n\t\t\t\t} else {\n\t\t\t\t\tcontainsOnlyWhitespace = model.getLineFirstNonWhitespaceColumn(i) === 0;\n\t\t\t\t}\n\t\t\t\tif (!containsOnlyWhitespace) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn containsOnlyWhitespace;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.callOnDispose.dispose();\n\t\tthis.callOnModel.dispose();\n\t}\n}\n\nfunction isStartOrEndInString(model: ITextModel, range: Range): boolean {\n\tconst isPositionInString = (position: Position): boolean => {\n\t\tconst tokenType = getStandardTokenTypeAtPosition(model, position);\n\t\treturn tokenType === StandardTokenType.String;\n\t};\n\treturn isPositionInString(range.getStartPosition()) || isPositionInString(range.getEndPosition());\n}\n\nfunction getIndentationEditOperations(model: ITextModel, builder: IEditOperationBuilder, tabSize: number, tabsToSpaces: boolean): void {\n\tif (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n\t\t// Model is empty\n\t\treturn;\n\t}\n\n\tlet spaces = '';\n\tfor (let i = 0; i < tabSize; i++) {\n\t\tspaces += ' ';\n\t}\n\n\tconst spacesRegExp = new RegExp(spaces, 'gi');\n\n\tfor (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\n\t\tlet lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\n\t\tif (lastIndentationColumn === 0) {\n\t\t\tlastIndentationColumn = model.getLineMaxColumn(lineNumber);\n\t\t}\n\n\t\tif (lastIndentationColumn === 1) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst originalIndentationRange = new Range(lineNumber, 1, lineNumber, lastIndentationColumn);\n\t\tconst originalIndentation = model.getValueInRange(originalIndentationRange);\n\t\tconst newIndentation = (\n\t\t\ttabsToSpaces\n\t\t\t\t? originalIndentation.replace(/\\t/ig, spaces)\n\t\t\t\t: originalIndentation.replace(spacesRegExp, '\\t')\n\t\t);\n\n\t\tbuilder.addEditOperation(originalIndentationRange, newIndentation);\n\t}\n}\n\nexport class IndentationToSpacesCommand implements ICommand {\n\n\tprivate selectionId: string | null = null;\n\n\tconstructor(private readonly selection: Selection, private tabSize: number) { }\n\n\tpublic getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void {\n\t\tthis.selectionId = builder.trackSelection(this.selection);\n\t\tgetIndentationEditOperations(model, builder, this.tabSize, true);\n\t}\n\n\tpublic computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection {\n\t\treturn helper.getTrackedSelection(this.selectionId!);\n\t}\n}\n\nexport class IndentationToTabsCommand implements ICommand {\n\n\tprivate selectionId: string | null = null;\n\n\tconstructor(private readonly selection: Selection, private tabSize: number) { }\n\n\tpublic getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void {\n\t\tthis.selectionId = builder.trackSelection(this.selection);\n\t\tgetIndentationEditOperations(model, builder, this.tabSize, false);\n\t}\n\n\tpublic computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection {\n\t\treturn helper.getTrackedSelection(this.selectionId!);\n\t}\n}\n\nregisterEditorContribution(AutoIndentOnPaste.ID, AutoIndentOnPaste, EditorContributionInstantiation.BeforeFirstInteraction);\nregisterEditorAction(IndentationToSpacesAction);\nregisterEditorAction(IndentationToTabsAction);\nregisterEditorAction(IndentUsingTabs);\nregisterEditorAction(IndentUsingSpaces);\nregisterEditorAction(ChangeTabDisplaySize);\nregisterEditorAction(DetectIndentation);\nregisterEditorAction(ReindentLinesAction);\nregisterEditorAction(ReindentSelectedLinesAction);\n"]}
|
|
1
|
+
{"version":3,"sources":["vs/editor/contrib/indentation/browser/indentation.ts"],"names":[],"mappings":"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","file":"indentation.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 { DisposableStore } from '../../../../base/common/lifecycle.js';\nimport * as strings from '../../../../base/common/strings.js';\nimport * as nls from '../../../../nls.js';\nimport { IQuickInputService } from '../../../../platform/quickinput/common/quickInput.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, IActionOptions, registerEditorAction, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { ShiftCommand } from '../../../common/commands/shiftCommand.js';\nimport { EditorAutoIndentStrategy, EditorOption } from '../../../common/config/editorOptions.js';\nimport { ISingleEditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { IRange, Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ICommand, ICursorStateComputerData, IEditOperationBuilder, IEditorContribution } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { StandardTokenType } from '../../../common/encodedTokenAttributes.js';\nimport { TextEdit } from '../../../common/languages.js';\nimport { getGoodIndentForLine, getIndentMetadata } from '../../../common/languages/autoIndent.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IndentConsts } from '../../../common/languages/supports/indentRules.js';\nimport { EndOfLineSequence, ITextModel } from '../../../common/model.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { getStandardTokenTypeAtPosition } from '../../../common/tokens/lineTokens.js';\nimport { getReindentEditOperations } from '../common/indentation.js';\nimport * as indentUtils from '../common/indentUtils.js';\n\nexport class IndentationToSpacesAction extends EditorAction {\n\tpublic static readonly ID = 'editor.action.indentationToSpaces';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: IndentationToSpacesAction.ID,\n\t\t\tlabel: nls.localize2('indentationToSpaces', \"Convert Indentation to Spaces\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentationToSpacesDescription', \"Convert the tab indentation to spaces.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst modelOpts = model.getOptions();\n\t\tconst selection = editor.getSelection();\n\t\tif (!selection) {\n\t\t\treturn;\n\t\t}\n\t\tconst command = new IndentationToSpacesCommand(selection, modelOpts.tabSize);\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, [command]);\n\t\teditor.pushUndoStop();\n\n\t\tmodel.updateOptions({\n\t\t\tinsertSpaces: true\n\t\t});\n\t}\n}\n\nexport class IndentationToTabsAction extends EditorAction {\n\tpublic static readonly ID = 'editor.action.indentationToTabs';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: IndentationToTabsAction.ID,\n\t\t\tlabel: nls.localize2('indentationToTabs', \"Convert Indentation to Tabs\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentationToTabsDescription', \"Convert the spaces indentation to tabs.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst modelOpts = model.getOptions();\n\t\tconst selection = editor.getSelection();\n\t\tif (!selection) {\n\t\t\treturn;\n\t\t}\n\t\tconst command = new IndentationToTabsCommand(selection, modelOpts.tabSize);\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, [command]);\n\t\teditor.pushUndoStop();\n\n\t\tmodel.updateOptions({\n\t\t\tinsertSpaces: false\n\t\t});\n\t}\n}\n\nexport class ChangeIndentationSizeAction extends EditorAction {\n\n\tconstructor(private readonly insertSpaces: boolean, private readonly displaySizeOnly: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst quickInputService = accessor.get(IQuickInputService);\n\t\tconst modelService = accessor.get(IModelService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n\t\tconst modelOpts = model.getOptions();\n\t\tconst picks = [1, 2, 3, 4, 5, 6, 7, 8].map(n => ({\n\t\t\tid: n.toString(),\n\t\t\tlabel: n.toString(),\n\t\t\t// add description for tabSize value set in the configuration\n\t\t\tdescription: (\n\t\t\t\tn === creationOpts.tabSize && n === modelOpts.tabSize\n\t\t\t\t\t? nls.localize('configuredTabSize', \"Configured Tab Size\")\n\t\t\t\t\t: n === creationOpts.tabSize\n\t\t\t\t\t\t? nls.localize('defaultTabSize', \"Default Tab Size\")\n\t\t\t\t\t\t: n === modelOpts.tabSize\n\t\t\t\t\t\t\t? nls.localize('currentTabSize', \"Current Tab Size\")\n\t\t\t\t\t\t\t: undefined\n\t\t\t)\n\t\t}));\n\n\t\t// auto focus the tabSize set for the current editor\n\t\tconst autoFocusIndex = Math.min(model.getOptions().tabSize - 1, 7);\n\n\t\tsetTimeout(() => {\n\t\t\tquickInputService.pick(picks, { placeHolder: nls.localize({ key: 'selectTabWidth', comment: ['Tab corresponds to the tab key'] }, \"Select Tab Size for Current File\"), activeItem: picks[autoFocusIndex] }).then(pick => {\n\t\t\t\tif (pick) {\n\t\t\t\t\tif (model && !model.isDisposed()) {\n\t\t\t\t\t\tconst pickedVal = parseInt(pick.label, 10);\n\t\t\t\t\t\tif (this.displaySizeOnly) {\n\t\t\t\t\t\t\tmodel.updateOptions({\n\t\t\t\t\t\t\t\ttabSize: pickedVal\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tmodel.updateOptions({\n\t\t\t\t\t\t\t\ttabSize: pickedVal,\n\t\t\t\t\t\t\t\tindentSize: pickedVal,\n\t\t\t\t\t\t\t\tinsertSpaces: this.insertSpaces\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}, 50/* quick input is sensitive to being opened so soon after another */);\n\t}\n}\n\nexport class IndentUsingTabs extends ChangeIndentationSizeAction {\n\n\tpublic static readonly ID = 'editor.action.indentUsingTabs';\n\n\tconstructor() {\n\t\tsuper(false, false, {\n\t\t\tid: IndentUsingTabs.ID,\n\t\t\tlabel: nls.localize2('indentUsingTabs', \"Indent Using Tabs\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentUsingTabsDescription', \"Use indentation with tabs.\"),\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class IndentUsingSpaces extends ChangeIndentationSizeAction {\n\n\tpublic static readonly ID = 'editor.action.indentUsingSpaces';\n\n\tconstructor() {\n\t\tsuper(true, false, {\n\t\t\tid: IndentUsingSpaces.ID,\n\t\t\tlabel: nls.localize2('indentUsingSpaces', \"Indent Using Spaces\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('indentUsingSpacesDescription', \"Use indentation with spaces.\"),\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class ChangeTabDisplaySize extends ChangeIndentationSizeAction {\n\n\tpublic static readonly ID = 'editor.action.changeTabDisplaySize';\n\n\tconstructor() {\n\t\tsuper(true, true, {\n\t\t\tid: ChangeTabDisplaySize.ID,\n\t\t\tlabel: nls.localize2('changeTabDisplaySize', \"Change Tab Display Size\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('changeTabDisplaySizeDescription', \"Change the space size equivalent of the tab.\"),\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class DetectIndentation extends EditorAction {\n\n\tpublic static readonly ID = 'editor.action.detectIndentation';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: DetectIndentation.ID,\n\t\t\tlabel: nls.localize2('detectIndentation', \"Detect Indentation from Content\"),\n\t\t\tprecondition: undefined,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('detectIndentationDescription', \"Detect the indentation from content.\"),\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst modelService = accessor.get(IModelService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst creationOpts = modelService.getCreationOptions(model.getLanguageId(), model.uri, model.isForSimpleWidget);\n\t\tmodel.detectIndentation(creationOpts.insertSpaces, creationOpts.tabSize);\n\t}\n}\n\nexport class ReindentLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.reindentlines',\n\t\t\tlabel: nls.localize2('editor.reindentlines', \"Reindent Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('editor.reindentlinesDescription', \"Reindent the lines of the editor.\"),\n\t\t\t},\n\t\t\tcanTriggerInlineEdits: true,\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst edits = getReindentEditOperations(model, languageConfigurationService, 1, model.getLineCount());\n\t\tif (edits.length > 0) {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeEdits(this.id, edits);\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t}\n}\n\nexport class ReindentSelectedLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.reindentselectedlines',\n\t\t\tlabel: nls.localize2('editor.reindentselectedlines', \"Reindent Selected Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmetadata: {\n\t\t\t\tdescription: nls.localize2('editor.reindentselectedlinesDescription', \"Reindent the selected lines of the editor.\"),\n\t\t\t},\n\t\t\tcanTriggerInlineEdits: true,\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\t\tconst model = editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\n\t\tfor (const selection of selections) {\n\t\t\tlet startLineNumber = selection.startLineNumber;\n\t\t\tlet endLineNumber = selection.endLineNumber;\n\n\t\t\tif (startLineNumber !== endLineNumber && selection.endColumn === 1) {\n\t\t\t\tendLineNumber--;\n\t\t\t}\n\n\t\t\tif (startLineNumber === 1) {\n\t\t\t\tif (startLineNumber === endLineNumber) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tstartLineNumber--;\n\t\t\t}\n\n\t\t\tconst editOperations = getReindentEditOperations(model, languageConfigurationService, startLineNumber, endLineNumber);\n\t\t\tedits.push(...editOperations);\n\t\t}\n\n\t\tif (edits.length > 0) {\n\t\t\teditor.pushUndoStop();\n\t\t\teditor.executeEdits(this.id, edits);\n\t\t\teditor.pushUndoStop();\n\t\t}\n\t}\n}\n\nexport class AutoIndentOnPasteCommand implements ICommand {\n\n\tprivate readonly _edits: { range: IRange; text: string; eol?: EndOfLineSequence }[];\n\n\tprivate readonly _initialSelection: Selection;\n\tprivate _selectionId: string | null;\n\n\tconstructor(edits: TextEdit[], initialSelection: Selection) {\n\t\tthis._initialSelection = initialSelection;\n\t\tthis._edits = [];\n\t\tthis._selectionId = null;\n\n\t\tfor (const edit of edits) {\n\t\t\tif (edit.range && typeof edit.text === 'string') {\n\t\t\t\tthis._edits.push(edit as { range: IRange; text: string; eol?: EndOfLineSequence });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void {\n\t\tfor (const edit of this._edits) {\n\t\t\tbuilder.addEditOperation(Range.lift(edit.range), edit.text);\n\t\t}\n\n\t\tlet selectionIsSet = false;\n\t\tif (Array.isArray(this._edits) && this._edits.length === 1 && this._initialSelection.isEmpty()) {\n\t\t\tif (this._edits[0].range.startColumn === this._initialSelection.endColumn &&\n\t\t\t\tthis._edits[0].range.startLineNumber === this._initialSelection.endLineNumber) {\n\t\t\t\tselectionIsSet = true;\n\t\t\t\tthis._selectionId = builder.trackSelection(this._initialSelection, true);\n\t\t\t} else if (this._edits[0].range.endColumn === this._initialSelection.startColumn &&\n\t\t\t\tthis._edits[0].range.endLineNumber === this._initialSelection.startLineNumber) {\n\t\t\t\tselectionIsSet = true;\n\t\t\t\tthis._selectionId = builder.trackSelection(this._initialSelection, false);\n\t\t\t}\n\t\t}\n\n\t\tif (!selectionIsSet) {\n\t\t\tthis._selectionId = builder.trackSelection(this._initialSelection);\n\t\t}\n\t}\n\n\tpublic computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection {\n\t\treturn helper.getTrackedSelection(this._selectionId!);\n\t}\n}\n\nexport class AutoIndentOnPaste implements IEditorContribution {\n\tpublic static readonly ID = 'editor.contrib.autoIndentOnPaste';\n\n\tprivate readonly callOnDispose = new DisposableStore();\n\tprivate readonly callOnModel = new DisposableStore();\n\n\tconstructor(\n\t\tprivate readonly editor: ICodeEditor,\n\t\t@ILanguageConfigurationService private readonly _languageConfigurationService: ILanguageConfigurationService\n\t) {\n\n\t\tthis.callOnDispose.add(editor.onDidChangeConfiguration(() => this.update()));\n\t\tthis.callOnDispose.add(editor.onDidChangeModel(() => this.update()));\n\t\tthis.callOnDispose.add(editor.onDidChangeModelLanguage(() => this.update()));\n\t}\n\n\tprivate update(): void {\n\n\t\t// clean up\n\t\tthis.callOnModel.clear();\n\n\t\t// we are disabled\n\t\tif (!this.editor.getOption(EditorOption.autoIndentOnPaste) || this.editor.getOption(EditorOption.autoIndent) < EditorAutoIndentStrategy.Full) {\n\t\t\treturn;\n\t\t}\n\n\t\t// no model\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.callOnModel.add(this.editor.onDidPaste(({ range }) => {\n\t\t\tthis.trigger(range);\n\t\t}));\n\t}\n\n\tpublic trigger(range: Range): void {\n\t\tconst selections = this.editor.getSelections();\n\t\tif (selections === null || selections.length > 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!model) {\n\t\t\treturn;\n\t\t}\n\t\tconst containsOnlyWhitespace = this.rangeContainsOnlyWhitespaceCharacters(model, range);\n\t\tif (containsOnlyWhitespace) {\n\t\t\treturn;\n\t\t}\n\t\tif (!this.editor.getOption(EditorOption.autoIndentOnPasteWithinString) && isStartOrEndInString(model, range)) {\n\t\t\treturn;\n\t\t}\n\t\tif (!model.tokenization.isCheapToTokenize(range.getStartPosition().lineNumber)) {\n\t\t\treturn;\n\t\t}\n\t\tconst autoIndent = this.editor.getOption(EditorOption.autoIndent);\n\t\tconst { tabSize, indentSize, insertSpaces } = model.getOptions();\n\t\tconst textEdits: TextEdit[] = [];\n\n\t\tconst indentConverter = {\n\t\t\tshiftIndent: (indentation: string) => {\n\t\t\t\treturn ShiftCommand.shiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n\t\t\t},\n\t\t\tunshiftIndent: (indentation: string) => {\n\t\t\t\treturn ShiftCommand.unshiftIndent(indentation, indentation.length + 1, tabSize, indentSize, insertSpaces);\n\t\t\t}\n\t\t};\n\n\t\tlet startLineNumber = range.startLineNumber;\n\n\t\tlet firstLineText = model.getLineContent(startLineNumber);\n\t\tif (!/\\S/.test(firstLineText.substring(0, range.startColumn - 1))) {\n\t\t\tconst indentOfFirstLine = getGoodIndentForLine(autoIndent, model, model.getLanguageId(), startLineNumber, indentConverter, this._languageConfigurationService);\n\n\t\t\tif (indentOfFirstLine !== null) {\n\t\t\t\tconst oldIndentation = strings.getLeadingWhitespace(firstLineText);\n\t\t\t\tconst newSpaceCnt = indentUtils.getSpaceCnt(indentOfFirstLine, tabSize);\n\t\t\t\tconst oldSpaceCnt = indentUtils.getSpaceCnt(oldIndentation, tabSize);\n\n\t\t\t\tif (newSpaceCnt !== oldSpaceCnt) {\n\t\t\t\t\tconst newIndent = indentUtils.generateIndent(newSpaceCnt, tabSize, insertSpaces);\n\t\t\t\t\ttextEdits.push({\n\t\t\t\t\t\trange: new Range(startLineNumber, 1, startLineNumber, oldIndentation.length + 1),\n\t\t\t\t\t\ttext: newIndent\n\t\t\t\t\t});\n\t\t\t\t\tfirstLineText = newIndent + firstLineText.substring(oldIndentation.length);\n\t\t\t\t} else {\n\t\t\t\t\tconst indentMetadata = getIndentMetadata(model, startLineNumber, this._languageConfigurationService);\n\n\t\t\t\t\tif (indentMetadata === 0 || indentMetadata === IndentConsts.UNINDENT_MASK) {\n\t\t\t\t\t\t// we paste content into a line where only contains whitespaces\n\t\t\t\t\t\t// after pasting, the indentation of the first line is already correct\n\t\t\t\t\t\t// the first line doesn't match any indentation rule\n\t\t\t\t\t\t// then no-op.\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst firstLineNumber = startLineNumber;\n\n\t\t// ignore empty or ignored lines\n\t\twhile (startLineNumber < range.endLineNumber) {\n\t\t\tif (!/\\S/.test(model.getLineContent(startLineNumber + 1))) {\n\t\t\t\tstartLineNumber++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\n\t\tif (startLineNumber !== range.endLineNumber) {\n\t\t\tconst virtualModel = {\n\t\t\t\ttokenization: {\n\t\t\t\t\tgetLineTokens: (lineNumber: number) => {\n\t\t\t\t\t\treturn model.tokenization.getLineTokens(lineNumber);\n\t\t\t\t\t},\n\t\t\t\t\tgetLanguageId: () => {\n\t\t\t\t\t\treturn model.getLanguageId();\n\t\t\t\t\t},\n\t\t\t\t\tgetLanguageIdAtPosition: (lineNumber: number, column: number) => {\n\t\t\t\t\t\treturn model.getLanguageIdAtPosition(lineNumber, column);\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tgetLineContent: (lineNumber: number) => {\n\t\t\t\t\tif (lineNumber === firstLineNumber) {\n\t\t\t\t\t\treturn firstLineText;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn model.getLineContent(lineNumber);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst indentOfSecondLine = getGoodIndentForLine(autoIndent, virtualModel, model.getLanguageId(), startLineNumber + 1, indentConverter, this._languageConfigurationService);\n\t\t\tif (indentOfSecondLine !== null) {\n\t\t\t\tconst newSpaceCntOfSecondLine = indentUtils.getSpaceCnt(indentOfSecondLine, tabSize);\n\t\t\t\tconst oldSpaceCntOfSecondLine = indentUtils.getSpaceCnt(strings.getLeadingWhitespace(model.getLineContent(startLineNumber + 1)), tabSize);\n\n\t\t\t\tif (newSpaceCntOfSecondLine !== oldSpaceCntOfSecondLine) {\n\t\t\t\t\tconst spaceCntOffset = newSpaceCntOfSecondLine - oldSpaceCntOfSecondLine;\n\t\t\t\t\tfor (let i = startLineNumber + 1; i <= range.endLineNumber; i++) {\n\t\t\t\t\t\tconst lineContent = model.getLineContent(i);\n\t\t\t\t\t\tconst originalIndent = strings.getLeadingWhitespace(lineContent);\n\t\t\t\t\t\tconst originalSpacesCnt = indentUtils.getSpaceCnt(originalIndent, tabSize);\n\t\t\t\t\t\tconst newSpacesCnt = originalSpacesCnt + spaceCntOffset;\n\t\t\t\t\t\tconst newIndent = indentUtils.generateIndent(newSpacesCnt, tabSize, insertSpaces);\n\n\t\t\t\t\t\tif (newIndent !== originalIndent) {\n\t\t\t\t\t\t\ttextEdits.push({\n\t\t\t\t\t\t\t\trange: new Range(i, 1, i, originalIndent.length + 1),\n\t\t\t\t\t\t\t\ttext: newIndent\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (textEdits.length > 0) {\n\t\t\tthis.editor.pushUndoStop();\n\t\t\tconst cmd = new AutoIndentOnPasteCommand(textEdits, this.editor.getSelection()!);\n\t\t\tthis.editor.executeCommand('autoIndentOnPaste', cmd);\n\t\t\tthis.editor.pushUndoStop();\n\t\t}\n\t}\n\n\tprivate rangeContainsOnlyWhitespaceCharacters(model: ITextModel, range: Range): boolean {\n\t\tconst lineContainsOnlyWhitespace = (content: string): boolean => {\n\t\t\treturn content.trim().length === 0;\n\t\t};\n\t\tlet containsOnlyWhitespace: boolean = true;\n\t\tif (range.startLineNumber === range.endLineNumber) {\n\t\t\tconst lineContent = model.getLineContent(range.startLineNumber);\n\t\t\tconst linePart = lineContent.substring(range.startColumn - 1, range.endColumn - 1);\n\t\t\tcontainsOnlyWhitespace = lineContainsOnlyWhitespace(linePart);\n\t\t} else {\n\t\t\tfor (let i = range.startLineNumber; i <= range.endLineNumber; i++) {\n\t\t\t\tconst lineContent = model.getLineContent(i);\n\t\t\t\tif (i === range.startLineNumber) {\n\t\t\t\t\tconst linePart = lineContent.substring(range.startColumn - 1);\n\t\t\t\t\tcontainsOnlyWhitespace = lineContainsOnlyWhitespace(linePart);\n\t\t\t\t} else if (i === range.endLineNumber) {\n\t\t\t\t\tconst linePart = lineContent.substring(0, range.endColumn - 1);\n\t\t\t\t\tcontainsOnlyWhitespace = lineContainsOnlyWhitespace(linePart);\n\t\t\t\t} else {\n\t\t\t\t\tcontainsOnlyWhitespace = model.getLineFirstNonWhitespaceColumn(i) === 0;\n\t\t\t\t}\n\t\t\t\tif (!containsOnlyWhitespace) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn containsOnlyWhitespace;\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.callOnDispose.dispose();\n\t\tthis.callOnModel.dispose();\n\t}\n}\n\nfunction isStartOrEndInString(model: ITextModel, range: Range): boolean {\n\tconst isPositionInString = (position: Position): boolean => {\n\t\tconst tokenType = getStandardTokenTypeAtPosition(model, position);\n\t\treturn tokenType === StandardTokenType.String;\n\t};\n\treturn isPositionInString(range.getStartPosition()) || isPositionInString(range.getEndPosition());\n}\n\nfunction getIndentationEditOperations(model: ITextModel, builder: IEditOperationBuilder, tabSize: number, tabsToSpaces: boolean): void {\n\tif (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n\t\t// Model is empty\n\t\treturn;\n\t}\n\n\tlet spaces = '';\n\tfor (let i = 0; i < tabSize; i++) {\n\t\tspaces += ' ';\n\t}\n\n\tconst spacesRegExp = new RegExp(spaces, 'gi');\n\n\tfor (let lineNumber = 1, lineCount = model.getLineCount(); lineNumber <= lineCount; lineNumber++) {\n\t\tlet lastIndentationColumn = model.getLineFirstNonWhitespaceColumn(lineNumber);\n\t\tif (lastIndentationColumn === 0) {\n\t\t\tlastIndentationColumn = model.getLineMaxColumn(lineNumber);\n\t\t}\n\n\t\tif (lastIndentationColumn === 1) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst originalIndentationRange = new Range(lineNumber, 1, lineNumber, lastIndentationColumn);\n\t\tconst originalIndentation = model.getValueInRange(originalIndentationRange);\n\t\tconst newIndentation = (\n\t\t\ttabsToSpaces\n\t\t\t\t? originalIndentation.replace(/\\t/ig, spaces)\n\t\t\t\t: originalIndentation.replace(spacesRegExp, '\\t')\n\t\t);\n\n\t\tbuilder.addEditOperation(originalIndentationRange, newIndentation);\n\t}\n}\n\nexport class IndentationToSpacesCommand implements ICommand {\n\n\tprivate selectionId: string | null = null;\n\n\tconstructor(private readonly selection: Selection, private tabSize: number) { }\n\n\tpublic getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void {\n\t\tthis.selectionId = builder.trackSelection(this.selection);\n\t\tgetIndentationEditOperations(model, builder, this.tabSize, true);\n\t}\n\n\tpublic computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection {\n\t\treturn helper.getTrackedSelection(this.selectionId!);\n\t}\n}\n\nexport class IndentationToTabsCommand implements ICommand {\n\n\tprivate selectionId: string | null = null;\n\n\tconstructor(private readonly selection: Selection, private tabSize: number) { }\n\n\tpublic getEditOperations(model: ITextModel, builder: IEditOperationBuilder): void {\n\t\tthis.selectionId = builder.trackSelection(this.selection);\n\t\tgetIndentationEditOperations(model, builder, this.tabSize, false);\n\t}\n\n\tpublic computeCursorState(model: ITextModel, helper: ICursorStateComputerData): Selection {\n\t\treturn helper.getTrackedSelection(this.selectionId!);\n\t}\n}\n\nregisterEditorContribution(AutoIndentOnPaste.ID, AutoIndentOnPaste, EditorContributionInstantiation.BeforeFirstInteraction);\nregisterEditorAction(IndentationToSpacesAction);\nregisterEditorAction(IndentationToTabsAction);\nregisterEditorAction(IndentUsingTabs);\nregisterEditorAction(IndentUsingSpaces);\nregisterEditorAction(ChangeTabDisplaySize);\nregisterEditorAction(DetectIndentation);\nregisterEditorAction(ReindentLinesAction);\nregisterEditorAction(ReindentSelectedLinesAction);\n"]}
|
|
@@ -82,7 +82,7 @@ let InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {
|
|
|
82
82
|
}
|
|
83
83
|
// (1.2) Inlay dbl-click gesture
|
|
84
84
|
if (isNonEmptyArray(part.item.hint.textEdits)) {
|
|
85
|
-
executor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize(
|
|
85
|
+
executor.emitOne(new MarkdownHover(this, anchor.range, [new MarkdownString().appendText(localize(1163, "Double-click to insert"))], false, 10001));
|
|
86
86
|
}
|
|
87
87
|
// (2) Inlay Label Part Tooltip
|
|
88
88
|
let partTooltip;
|
|
@@ -101,19 +101,19 @@ let InlayHintsHover = class InlayHintsHover extends MarkdownHoverParticipant {
|
|
|
101
101
|
const useMetaKey = this._editor.getOption(86 /* EditorOption.multiCursorModifier */) === 'altKey';
|
|
102
102
|
const kb = useMetaKey
|
|
103
103
|
? platform.isMacintosh
|
|
104
|
-
? localize(
|
|
105
|
-
: localize(
|
|
104
|
+
? localize(1164, "cmd + click")
|
|
105
|
+
: localize(1165, "ctrl + click")
|
|
106
106
|
: platform.isMacintosh
|
|
107
|
-
? localize(
|
|
108
|
-
: localize(
|
|
107
|
+
? localize(1166, "option + click")
|
|
108
|
+
: localize(1167, "alt + click");
|
|
109
109
|
if (part.part.location && part.part.command) {
|
|
110
|
-
linkHint = new MarkdownString().appendText(localize(
|
|
110
|
+
linkHint = new MarkdownString().appendText(localize(1168, 'Go to Definition ({0}), right click for more', kb));
|
|
111
111
|
}
|
|
112
112
|
else if (part.part.location) {
|
|
113
|
-
linkHint = new MarkdownString().appendText(localize(
|
|
113
|
+
linkHint = new MarkdownString().appendText(localize(1169, 'Go to Definition ({0})', kb));
|
|
114
114
|
}
|
|
115
115
|
else if (part.part.command) {
|
|
116
|
-
linkHint = new MarkdownString(`[${localize(
|
|
116
|
+
linkHint = new MarkdownString(`[${localize(1170, "Execute Command")}](${asCommandLink(part.part.command)} "${part.part.command.title}") (${kb})`, { isTrusted: true });
|
|
117
117
|
}
|
|
118
118
|
if (linkHint) {
|
|
119
119
|
executor.emitOne(new MarkdownHover(this, anchor.range, [linkHint], false, 10000));
|