monaco-editor-core 0.55.0-dev-20251106 → 0.55.0-rc

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.
Files changed (186) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +0 -6
  18. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  19. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/copySelection.js +24 -83
  20. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/copySelection.js.map +1 -1
  21. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js +1 -1
  22. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/diffEditorViewZones.js.map +1 -1
  23. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js +13 -17
  24. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/inlineDiffDeletedCodeMargin.js.map +1 -1
  25. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js +81 -9
  26. package/esm/vs/editor/browser/widget/diffEditor/components/diffEditorViewZones/renderLines.js.map +1 -1
  27. package/esm/vs/editor/browser/widget/diffEditor/diffEditor.contribution.js +5 -5
  28. package/esm/vs/editor/browser/widget/diffEditor/features/hideUnchangedRegionsFeature.js +7 -7
  29. package/esm/vs/editor/browser/widget/diffEditor/features/movedBlocksLinesFeature.js +2 -2
  30. package/esm/vs/editor/browser/widget/diffEditor/features/revertButtonsFeature.js +2 -2
  31. package/esm/vs/editor/browser/widget/diffEditor/registrations.contribution.js +5 -5
  32. package/esm/vs/editor/browser/widget/multiDiffEditor/colors.js +3 -3
  33. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js +1 -1
  34. package/esm/vs/editor/browser/widget/multiDiffEditor/diffEditorItemTemplate.js.map +1 -1
  35. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js +2 -2
  36. package/esm/vs/editor/common/config/editorConfigurationSchema.js +54 -54
  37. package/esm/vs/editor/common/config/editorOptions.js +407 -407
  38. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  39. package/esm/vs/editor/common/core/editorColorRegistry.js +68 -68
  40. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  41. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  42. package/esm/vs/editor/common/languages.js +56 -56
  43. package/esm/vs/editor/common/model/editStack.js +1 -1
  44. package/esm/vs/editor/common/standaloneStrings.js +10 -10
  45. package/esm/vs/editor/common/textModelEditSource.js +2 -2
  46. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  47. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  48. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  49. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  50. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  51. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  52. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  53. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  54. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  55. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  56. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  57. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  58. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  59. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  60. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  61. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  62. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  63. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  64. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  65. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  66. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  67. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  68. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  69. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  70. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  71. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  72. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  73. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  74. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  75. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  76. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  77. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  78. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  79. package/esm/vs/editor/contrib/format/browser/format.js +3 -7
  80. package/esm/vs/editor/contrib/format/browser/format.js.map +1 -1
  81. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  82. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  83. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  84. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  85. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  86. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  87. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  88. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  89. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  90. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  91. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  92. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  93. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  94. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  95. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  96. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  97. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  98. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  99. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  100. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +20 -20
  101. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +12 -12
  102. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  103. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  104. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  105. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  106. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +1 -1
  107. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  108. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  109. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  110. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  111. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  112. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  113. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  114. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  115. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  116. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  117. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  118. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  119. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +10 -10
  120. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  121. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  122. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  123. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  124. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  125. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  126. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  127. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  128. package/esm/vs/editor/contrib/suggest/browser/suggest.js +8 -8
  129. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +10 -10
  130. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  131. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  132. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  133. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  134. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  135. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  136. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  137. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  138. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  139. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  140. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  141. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  142. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +1 -1
  143. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  144. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  145. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  146. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  147. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  148. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  149. package/esm/vs/platform/actions/common/menuService.js +2 -2
  150. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  151. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  152. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  153. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  154. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  155. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  156. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  157. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  158. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  159. package/esm/vs/platform/list/browser/listService.js +29 -29
  160. package/esm/vs/platform/list/browser/listService.js.map +1 -1
  161. package/esm/vs/platform/markers/common/markerService.js +2 -2
  162. package/esm/vs/platform/markers/common/markers.js +6 -6
  163. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  164. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  165. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  166. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  167. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  168. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  169. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  170. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  171. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  172. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  173. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  174. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  175. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  176. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  177. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  178. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  179. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  180. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  181. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  182. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  183. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  184. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  185. package/package.json +2 -2
  186. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/format/browser/format.ts","vs/editor/contrib/format/browser/format.ts"],"names":[],"mappings":"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","file":"format.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 { asArray, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { IDisposable } from '../../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { IActiveCodeEditor, isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, FormattingOptions, TextEdit } from '../../../common/languages.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ExtensionIdentifierSet } from '../../../../platform/extensions/common/extensions.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IProgress } from '../../../../platform/progress/common/progress.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\n\nexport function getRealAndSyntheticDocumentFormattersOrdered(\n\tdocumentFormattingEditProvider: LanguageFeatureRegistry<DocumentFormattingEditProvider>,\n\tdocumentRangeFormattingEditProvider: LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>,\n\tmodel: ITextModel\n): DocumentFormattingEditProvider[] {\n\tconst result: DocumentFormattingEditProvider[] = [];\n\tconst seen = new ExtensionIdentifierSet();\n\n\t// (1) add all document formatter\n\tconst docFormatter = documentFormattingEditProvider.ordered(model);\n\tfor (const formatter of docFormatter) {\n\t\tresult.push(formatter);\n\t\tif (formatter.extensionId) {\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t}\n\n\t// (2) add all range formatter as document formatter (unless the same extension already did that)\n\tconst rangeFormatter = documentRangeFormattingEditProvider.ordered(model);\n\tfor (const formatter of rangeFormatter) {\n\t\tif (formatter.extensionId) {\n\t\t\tif (seen.has(formatter.extensionId)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t\tresult.push({\n\t\t\tdisplayName: formatter.displayName,\n\t\t\textensionId: formatter.extensionId,\n\t\t\tprovideDocumentFormattingEdits(model, options, token) {\n\t\t\t\treturn formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\n\t\t\t}\n\t\t});\n\t}\n\treturn result;\n}\n\nexport const enum FormattingKind {\n\tFile = 1,\n\tSelection = 2\n}\n\nexport const enum FormattingMode {\n\tExplicit = 1,\n\tSilent = 2\n}\n\nexport interface IFormattingEditProviderSelector {\n\t<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined>;\n}\n\nexport abstract class FormattingConflicts {\n\n\tprivate static readonly _selectors = new LinkedList<IFormattingEditProviderSelector>();\n\n\tstatic setFormatterSelector(selector: IFormattingEditProviderSelector): IDisposable {\n\t\tconst remove = FormattingConflicts._selectors.unshift(selector);\n\t\treturn { dispose: remove };\n\t}\n\n\tstatic async select<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined> {\n\t\tif (formatter.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst selector = Iterable.first(FormattingConflicts._selectors);\n\t\tif (selector) {\n\t\t\treturn await selector(formatter, document, mode, kind);\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport async function formatDocumentRangesWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentRangeFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst { documentRangeFormattingEditProvider: documentRangeFormattingEditProviderRegistry } = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = documentRangeFormattingEditProviderRegistry.ordered(model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.Selection);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentRangesWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentRangeFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst logService = accessor.get(ILogService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\t// make sure that ranges don't overlap nor touch each other\n\tconst ranges: Range[] = [];\n\tlet len = 0;\n\tfor (const range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\n\t\tif (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\n\t\t\tranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\n\t\t} else {\n\t\t\tlen = ranges.push(range);\n\t\t}\n\t}\n\n\tconst computeEdits = async (range: Range) => {\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, range);\n\n\t\tconst result = (await provider.provideDocumentRangeFormattingEdits(\n\t\t\tmodel,\n\t\t\trange,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t)) || [];\n\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\n\t\treturn result;\n\t};\n\n\tconst hasIntersectingEdit = (a: TextEdit[], b: TextEdit[]) => {\n\t\tif (!a.length || !b.length) {\n\t\t\treturn false;\n\t\t}\n\t\t// quick exit if the list of ranges are completely unrelated [O(n)]\n\t\tconst mergedA = a.reduce((acc, val) => { return Range.plusRange(acc, val.range); }, a[0].range);\n\t\tif (!b.some(x => { return Range.intersectRanges(mergedA, x.range); })) {\n\t\t\treturn false;\n\t\t}\n\t\t// fallback to a complete check [O(n^2)]\n\t\tfor (const edit of a) {\n\t\t\tfor (const otherEdit of b) {\n\t\t\t\tif (Range.intersectRanges(edit.range, otherEdit.range)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst allEdits: TextEdit[] = [];\n\tconst rawEditsList: TextEdit[][] = [];\n\ttry {\n\t\tif (typeof provider.provideDocumentRangesFormattingEdits === 'function') {\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, ranges);\n\t\t\tconst result = (await provider.provideDocumentRangesFormattingEdits(\n\t\t\t\tmodel,\n\t\t\t\tranges,\n\t\t\t\tmodel.getFormattingOptions(),\n\t\t\t\tcts.token\n\t\t\t)) || [];\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\t\t\trawEditsList.push(result);\n\t\t} else {\n\n\t\t\tfor (const range of ranges) {\n\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trawEditsList.push(await computeEdits(range));\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < ranges.length; ++i) {\n\t\t\t\tfor (let j = i + 1; j < ranges.length; ++j) {\n\t\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (hasIntersectingEdit(rawEditsList[i], rawEditsList[j])) {\n\t\t\t\t\t\t// Merge ranges i and j into a single range, recompute the associated edits\n\t\t\t\t\t\tconst mergedRange = Range.plusRange(ranges[i], ranges[j]);\n\t\t\t\t\t\tconst edits = await computeEdits(mergedRange);\n\t\t\t\t\t\tranges.splice(j, 1);\n\t\t\t\t\t\tranges.splice(i, 1);\n\t\t\t\t\t\tranges.push(mergedRange);\n\t\t\t\t\t\trawEditsList.splice(j, 1);\n\t\t\t\t\t\trawEditsList.splice(i, 1);\n\t\t\t\t\t\trawEditsList.push(edits);\n\t\t\t\t\t\t// Restart scanning\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const rawEdits of rawEditsList) {\n\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst minimalEdits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t\tif (minimalEdits) {\n\t\t\t\tallEdits.push(...minimalEdits);\n\t\t\t}\n\t\t}\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (allEdits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, allEdits, true);\n\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = allEdits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], allEdits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function formatDocumentWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.File);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\tlet edits: TextEdit[] | undefined;\n\ttry {\n\t\tconst rawEdits = await provider.provideDocumentFormattingEdits(\n\t\t\tmodel,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t);\n\n\t\tedits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (!edits || edits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, edits, mode !== FormattingMode.Silent);\n\n\t\tif (mode !== FormattingMode.Silent) {\n\t\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\t\t}\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = edits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], edits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function getDocumentRangeFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\trange: Range,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = languageFeaturesService.documentRangeFormattingEditProvider.ordered(model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function getDocumentFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function getOnTypeFormattingEdits(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\tposition: Position,\n\tch: string,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | null | undefined> {\n\n\tconst providers = languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n\n\tif (providers.length === 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\tif (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\treturn Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, token)).catch(onUnexpectedExternalError).then(edits => {\n\t\treturn workerService.computeMoreMinimalEdits(model.uri, edits);\n\t});\n}\n\nfunction isFormattingOptions(obj: unknown): obj is FormattingOptions {\n\tconst candidate = obj as FormattingOptions | undefined;\n\n\treturn !!candidate && typeof candidate === 'object' && typeof candidate.tabSize === 'number' && typeof candidate.insertSpaces === 'boolean';\n}\n\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', async function (accessor, ...args) {\n\tconst [resource, range, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Range.isIRange(range));\n\tassertType(isFormattingOptions(options));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentRangeFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, Range.lift(range), options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', async function (accessor, ...args) {\n\tconst [resource, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(isFormattingOptions(options));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', async function (accessor, ...args) {\n\tconst [resource, position, ch, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Position.isIPosition(position));\n\tassertType(typeof ch === 'string');\n\tassertType(isFormattingOptions(options));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getOnTypeFormattingEdits(workerService, languageFeaturesService, reference.object.textEditorModel, Position.lift(position), ch, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { asArray, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { IDisposable } from '../../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { IActiveCodeEditor, isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, FormattingOptions, TextEdit } from '../../../common/languages.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ExtensionIdentifierSet } from '../../../../platform/extensions/common/extensions.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IProgress } from '../../../../platform/progress/common/progress.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\n\nexport function getRealAndSyntheticDocumentFormattersOrdered(\n\tdocumentFormattingEditProvider: LanguageFeatureRegistry<DocumentFormattingEditProvider>,\n\tdocumentRangeFormattingEditProvider: LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>,\n\tmodel: ITextModel\n): DocumentFormattingEditProvider[] {\n\tconst result: DocumentFormattingEditProvider[] = [];\n\tconst seen = new ExtensionIdentifierSet();\n\n\t// (1) add all document formatter\n\tconst docFormatter = documentFormattingEditProvider.ordered(model);\n\tfor (const formatter of docFormatter) {\n\t\tresult.push(formatter);\n\t\tif (formatter.extensionId) {\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t}\n\n\t// (2) add all range formatter as document formatter (unless the same extension already did that)\n\tconst rangeFormatter = documentRangeFormattingEditProvider.ordered(model);\n\tfor (const formatter of rangeFormatter) {\n\t\tif (formatter.extensionId) {\n\t\t\tif (seen.has(formatter.extensionId)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t\tresult.push({\n\t\t\tdisplayName: formatter.displayName,\n\t\t\textensionId: formatter.extensionId,\n\t\t\tprovideDocumentFormattingEdits(model, options, token) {\n\t\t\t\treturn formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\n\t\t\t}\n\t\t});\n\t}\n\treturn result;\n}\n\nexport const enum FormattingKind {\n\tFile = 1,\n\tSelection = 2\n}\n\nexport const enum FormattingMode {\n\tExplicit = 1,\n\tSilent = 2\n}\n\nexport interface IFormattingEditProviderSelector {\n\t<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined>;\n}\n\nexport abstract class FormattingConflicts {\n\n\tprivate static readonly _selectors = new LinkedList<IFormattingEditProviderSelector>();\n\n\tstatic setFormatterSelector(selector: IFormattingEditProviderSelector): IDisposable {\n\t\tconst remove = FormattingConflicts._selectors.unshift(selector);\n\t\treturn { dispose: remove };\n\t}\n\n\tstatic async select<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined> {\n\t\tif (formatter.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst selector = Iterable.first(FormattingConflicts._selectors);\n\t\tif (selector) {\n\t\t\treturn await selector(formatter, document, mode, kind);\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport async function formatDocumentRangesWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentRangeFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst { documentRangeFormattingEditProvider: documentRangeFormattingEditProviderRegistry } = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = documentRangeFormattingEditProviderRegistry.ordered(model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.Selection);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentRangesWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentRangeFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst logService = accessor.get(ILogService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\t// make sure that ranges don't overlap nor touch each other\n\tconst ranges: Range[] = [];\n\tlet len = 0;\n\tfor (const range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\n\t\tif (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\n\t\t\tranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\n\t\t} else {\n\t\t\tlen = ranges.push(range);\n\t\t}\n\t}\n\n\tconst computeEdits = async (range: Range) => {\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, range);\n\n\t\tconst result = (await provider.provideDocumentRangeFormattingEdits(\n\t\t\tmodel,\n\t\t\trange,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t)) || [];\n\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\n\t\treturn result;\n\t};\n\n\tconst hasIntersectingEdit = (a: TextEdit[], b: TextEdit[]) => {\n\t\tif (!a.length || !b.length) {\n\t\t\treturn false;\n\t\t}\n\t\t// quick exit if the list of ranges are completely unrelated [O(n)]\n\t\tconst mergedA = a.reduce((acc, val) => { return Range.plusRange(acc, val.range); }, a[0].range);\n\t\tif (!b.some(x => { return Range.intersectRanges(mergedA, x.range); })) {\n\t\t\treturn false;\n\t\t}\n\t\t// fallback to a complete check [O(n^2)]\n\t\tfor (const edit of a) {\n\t\t\tfor (const otherEdit of b) {\n\t\t\t\tif (Range.intersectRanges(edit.range, otherEdit.range)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst allEdits: TextEdit[] = [];\n\tconst rawEditsList: TextEdit[][] = [];\n\ttry {\n\t\tif (typeof provider.provideDocumentRangesFormattingEdits === 'function') {\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, ranges);\n\t\t\tconst result = (await provider.provideDocumentRangesFormattingEdits(\n\t\t\t\tmodel,\n\t\t\t\tranges,\n\t\t\t\tmodel.getFormattingOptions(),\n\t\t\t\tcts.token\n\t\t\t)) || [];\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\t\t\trawEditsList.push(result);\n\t\t} else {\n\n\t\t\tfor (const range of ranges) {\n\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trawEditsList.push(await computeEdits(range));\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < ranges.length; ++i) {\n\t\t\t\tfor (let j = i + 1; j < ranges.length; ++j) {\n\t\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (hasIntersectingEdit(rawEditsList[i], rawEditsList[j])) {\n\t\t\t\t\t\t// Merge ranges i and j into a single range, recompute the associated edits\n\t\t\t\t\t\tconst mergedRange = Range.plusRange(ranges[i], ranges[j]);\n\t\t\t\t\t\tconst edits = await computeEdits(mergedRange);\n\t\t\t\t\t\tranges.splice(j, 1);\n\t\t\t\t\t\tranges.splice(i, 1);\n\t\t\t\t\t\tranges.push(mergedRange);\n\t\t\t\t\t\trawEditsList.splice(j, 1);\n\t\t\t\t\t\trawEditsList.splice(i, 1);\n\t\t\t\t\t\trawEditsList.push(edits);\n\t\t\t\t\t\t// Restart scanning\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const rawEdits of rawEditsList) {\n\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst minimalEdits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t\tif (minimalEdits) {\n\t\t\t\tallEdits.push(...minimalEdits);\n\t\t\t}\n\t\t}\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (allEdits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, allEdits, true);\n\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = allEdits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], allEdits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function formatDocumentWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.File);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\tlet edits: TextEdit[] | undefined;\n\ttry {\n\t\tconst rawEdits = await provider.provideDocumentFormattingEdits(\n\t\t\tmodel,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t);\n\n\t\tedits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (!edits || edits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, edits, mode !== FormattingMode.Silent);\n\n\t\tif (mode !== FormattingMode.Silent) {\n\t\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\t\t}\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = edits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], edits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function getDocumentRangeFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\trange: Range,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = languageFeaturesService.documentRangeFormattingEditProvider.ordered(model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function getDocumentFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function getOnTypeFormattingEdits(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\tposition: Position,\n\tch: string,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | null | undefined> {\n\n\tconst providers = languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n\n\tif (providers.length === 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\tif (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\treturn Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, token)).catch(onUnexpectedExternalError).then(edits => {\n\t\treturn workerService.computeMoreMinimalEdits(model.uri, edits);\n\t});\n}\n\nfunction isFormattingOptions(obj: unknown): obj is FormattingOptions {\n\tconst candidate = obj as FormattingOptions | undefined;\n\n\treturn !!candidate && typeof candidate === 'object' && typeof candidate.tabSize === 'number' && typeof candidate.insertSpaces === 'boolean';\n}\n\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', async function (accessor, ...args) {\n\tconst [resource, range, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Range.isIRange(range));\n\tassertType(isFormattingOptions(options));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentRangeFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, Range.lift(range), options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', async function (accessor, ...args) {\n\tconst [resource, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(isFormattingOptions(options));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', async function (accessor, ...args) {\n\tconst [resource, position, ch, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Position.isIPosition(position));\n\tassertType(typeof ch === 'string');\n\tassertType(isFormattingOptions(options));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getOnTypeFormattingEdits(workerService, languageFeaturesService, reference.object.textEditorModel, Position.lift(position), ch, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/format/browser/format.ts","vs/editor/contrib/format/browser/format.ts"],"names":[],"mappings":"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","file":"format.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 { asArray, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { IDisposable } from '../../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { IActiveCodeEditor, isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, FormattingOptions, TextEdit } from '../../../common/languages.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ExtensionIdentifierSet } from '../../../../platform/extensions/common/extensions.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IProgress } from '../../../../platform/progress/common/progress.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\n\nexport function getRealAndSyntheticDocumentFormattersOrdered(\n\tdocumentFormattingEditProvider: LanguageFeatureRegistry<DocumentFormattingEditProvider>,\n\tdocumentRangeFormattingEditProvider: LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>,\n\tmodel: ITextModel\n): DocumentFormattingEditProvider[] {\n\tconst result: DocumentFormattingEditProvider[] = [];\n\tconst seen = new ExtensionIdentifierSet();\n\n\t// (1) add all document formatter\n\tconst docFormatter = documentFormattingEditProvider.ordered(model);\n\tfor (const formatter of docFormatter) {\n\t\tresult.push(formatter);\n\t\tif (formatter.extensionId) {\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t}\n\n\t// (2) add all range formatter as document formatter (unless the same extension already did that)\n\tconst rangeFormatter = documentRangeFormattingEditProvider.ordered(model);\n\tfor (const formatter of rangeFormatter) {\n\t\tif (formatter.extensionId) {\n\t\t\tif (seen.has(formatter.extensionId)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t\tresult.push({\n\t\t\tdisplayName: formatter.displayName,\n\t\t\textensionId: formatter.extensionId,\n\t\t\tprovideDocumentFormattingEdits(model, options, token) {\n\t\t\t\treturn formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\n\t\t\t}\n\t\t});\n\t}\n\treturn result;\n}\n\nexport const enum FormattingKind {\n\tFile = 1,\n\tSelection = 2\n}\n\nexport const enum FormattingMode {\n\tExplicit = 1,\n\tSilent = 2\n}\n\nexport interface IFormattingEditProviderSelector {\n\t<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined>;\n}\n\nexport abstract class FormattingConflicts {\n\n\tprivate static readonly _selectors = new LinkedList<IFormattingEditProviderSelector>();\n\n\tstatic setFormatterSelector(selector: IFormattingEditProviderSelector): IDisposable {\n\t\tconst remove = FormattingConflicts._selectors.unshift(selector);\n\t\treturn { dispose: remove };\n\t}\n\n\tstatic async select<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined> {\n\t\tif (formatter.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst selector = Iterable.first(FormattingConflicts._selectors);\n\t\tif (selector) {\n\t\t\treturn await selector(formatter, document, mode, kind);\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport async function formatDocumentRangesWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentRangeFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst { documentRangeFormattingEditProvider: documentRangeFormattingEditProviderRegistry } = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = documentRangeFormattingEditProviderRegistry.ordered(model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.Selection);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentRangesWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentRangeFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst logService = accessor.get(ILogService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\t// make sure that ranges don't overlap nor touch each other\n\tconst ranges: Range[] = [];\n\tlet len = 0;\n\tfor (const range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\n\t\tif (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\n\t\t\tranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\n\t\t} else {\n\t\t\tlen = ranges.push(range);\n\t\t}\n\t}\n\n\tconst computeEdits = async (range: Range) => {\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, range);\n\n\t\tconst result = (await provider.provideDocumentRangeFormattingEdits(\n\t\t\tmodel,\n\t\t\trange,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t)) || [];\n\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\n\t\treturn result;\n\t};\n\n\tconst hasIntersectingEdit = (a: TextEdit[], b: TextEdit[]) => {\n\t\tif (!a.length || !b.length) {\n\t\t\treturn false;\n\t\t}\n\t\t// quick exit if the list of ranges are completely unrelated [O(n)]\n\t\tconst mergedA = a.reduce((acc, val) => { return Range.plusRange(acc, val.range); }, a[0].range);\n\t\tif (!b.some(x => { return Range.intersectRanges(mergedA, x.range); })) {\n\t\t\treturn false;\n\t\t}\n\t\t// fallback to a complete check [O(n^2)]\n\t\tfor (const edit of a) {\n\t\t\tfor (const otherEdit of b) {\n\t\t\t\tif (Range.intersectRanges(edit.range, otherEdit.range)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst allEdits: TextEdit[] = [];\n\tconst rawEditsList: TextEdit[][] = [];\n\ttry {\n\t\tif (typeof provider.provideDocumentRangesFormattingEdits === 'function') {\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, ranges);\n\t\t\tconst result = (await provider.provideDocumentRangesFormattingEdits(\n\t\t\t\tmodel,\n\t\t\t\tranges,\n\t\t\t\tmodel.getFormattingOptions(),\n\t\t\t\tcts.token\n\t\t\t)) || [];\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\t\t\trawEditsList.push(result);\n\t\t} else {\n\n\t\t\tfor (const range of ranges) {\n\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trawEditsList.push(await computeEdits(range));\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < ranges.length; ++i) {\n\t\t\t\tfor (let j = i + 1; j < ranges.length; ++j) {\n\t\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (hasIntersectingEdit(rawEditsList[i], rawEditsList[j])) {\n\t\t\t\t\t\t// Merge ranges i and j into a single range, recompute the associated edits\n\t\t\t\t\t\tconst mergedRange = Range.plusRange(ranges[i], ranges[j]);\n\t\t\t\t\t\tconst edits = await computeEdits(mergedRange);\n\t\t\t\t\t\tranges.splice(j, 1);\n\t\t\t\t\t\tranges.splice(i, 1);\n\t\t\t\t\t\tranges.push(mergedRange);\n\t\t\t\t\t\trawEditsList.splice(j, 1);\n\t\t\t\t\t\trawEditsList.splice(i, 1);\n\t\t\t\t\t\trawEditsList.push(edits);\n\t\t\t\t\t\t// Restart scanning\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const rawEdits of rawEditsList) {\n\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst minimalEdits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t\tif (minimalEdits) {\n\t\t\t\tallEdits.push(...minimalEdits);\n\t\t\t}\n\t\t}\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (allEdits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, allEdits, true);\n\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = allEdits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], allEdits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function formatDocumentWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.File);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\tlet edits: TextEdit[] | undefined;\n\ttry {\n\t\tconst rawEdits = await provider.provideDocumentFormattingEdits(\n\t\t\tmodel,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t);\n\n\t\tedits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (!edits || edits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, edits, mode !== FormattingMode.Silent);\n\n\t\tif (mode !== FormattingMode.Silent) {\n\t\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\t\t}\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = edits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], edits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function getDocumentRangeFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\trange: Range,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = languageFeaturesService.documentRangeFormattingEditProvider.ordered(model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function getDocumentFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function getOnTypeFormattingEdits(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\tposition: Position,\n\tch: string,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | null | undefined> {\n\n\tconst providers = languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n\n\tif (providers.length === 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\tif (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\treturn Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, token)).catch(onUnexpectedExternalError).then(edits => {\n\t\treturn workerService.computeMoreMinimalEdits(model.uri, edits);\n\t});\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', async function (accessor, ...args: any[]) {\n\tconst [resource, range, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Range.isIRange(range));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentRangeFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, Range.lift(range), options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', async function (accessor, ...args: any[]) {\n\tconst [resource, options] = args;\n\tassertType(URI.isUri(resource));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', async function (accessor, ...args: any[]) {\n\tconst [resource, position, ch, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Position.isIPosition(position));\n\tassertType(typeof ch === 'string');\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getOnTypeFormattingEdits(workerService, languageFeaturesService, reference.object.textEditorModel, Position.lift(position), ch, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { asArray, isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationToken, CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Iterable } from '../../../../base/common/iterator.js';\nimport { IDisposable } from '../../../../base/common/lifecycle.js';\nimport { LinkedList } from '../../../../base/common/linkedList.js';\nimport { assertType } from '../../../../base/common/types.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { CodeEditorStateFlag, EditorStateCancellationTokenSource, TextModelCancellationTokenSource } from '../../editorState/browser/editorState.js';\nimport { IActiveCodeEditor, isCodeEditor } from '../../../browser/editorBrowser.js';\nimport { ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ScrollType } from '../../../common/editorCommon.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { DocumentFormattingEditProvider, DocumentRangeFormattingEditProvider, FormattingOptions, TextEdit } from '../../../common/languages.js';\nimport { IEditorWorkerService } from '../../../common/services/editorWorker.js';\nimport { ITextModelService } from '../../../common/services/resolverService.js';\nimport { FormattingEdit } from './formattingEdit.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { ExtensionIdentifierSet } from '../../../../platform/extensions/common/extensions.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IProgress } from '../../../../platform/progress/common/progress.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { LanguageFeatureRegistry } from '../../../common/languageFeatureRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { AccessibilitySignal, IAccessibilitySignalService } from '../../../../platform/accessibilitySignal/browser/accessibilitySignalService.js';\n\nexport function getRealAndSyntheticDocumentFormattersOrdered(\n\tdocumentFormattingEditProvider: LanguageFeatureRegistry<DocumentFormattingEditProvider>,\n\tdocumentRangeFormattingEditProvider: LanguageFeatureRegistry<DocumentRangeFormattingEditProvider>,\n\tmodel: ITextModel\n): DocumentFormattingEditProvider[] {\n\tconst result: DocumentFormattingEditProvider[] = [];\n\tconst seen = new ExtensionIdentifierSet();\n\n\t// (1) add all document formatter\n\tconst docFormatter = documentFormattingEditProvider.ordered(model);\n\tfor (const formatter of docFormatter) {\n\t\tresult.push(formatter);\n\t\tif (formatter.extensionId) {\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t}\n\n\t// (2) add all range formatter as document formatter (unless the same extension already did that)\n\tconst rangeFormatter = documentRangeFormattingEditProvider.ordered(model);\n\tfor (const formatter of rangeFormatter) {\n\t\tif (formatter.extensionId) {\n\t\t\tif (seen.has(formatter.extensionId)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tseen.add(formatter.extensionId);\n\t\t}\n\t\tresult.push({\n\t\t\tdisplayName: formatter.displayName,\n\t\t\textensionId: formatter.extensionId,\n\t\t\tprovideDocumentFormattingEdits(model, options, token) {\n\t\t\t\treturn formatter.provideDocumentRangeFormattingEdits(model, model.getFullModelRange(), options, token);\n\t\t\t}\n\t\t});\n\t}\n\treturn result;\n}\n\nexport const enum FormattingKind {\n\tFile = 1,\n\tSelection = 2\n}\n\nexport const enum FormattingMode {\n\tExplicit = 1,\n\tSilent = 2\n}\n\nexport interface IFormattingEditProviderSelector {\n\t<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined>;\n}\n\nexport abstract class FormattingConflicts {\n\n\tprivate static readonly _selectors = new LinkedList<IFormattingEditProviderSelector>();\n\n\tstatic setFormatterSelector(selector: IFormattingEditProviderSelector): IDisposable {\n\t\tconst remove = FormattingConflicts._selectors.unshift(selector);\n\t\treturn { dispose: remove };\n\t}\n\n\tstatic async select<T extends (DocumentFormattingEditProvider | DocumentRangeFormattingEditProvider)>(formatter: T[], document: ITextModel, mode: FormattingMode, kind: FormattingKind): Promise<T | undefined> {\n\t\tif (formatter.length === 0) {\n\t\t\treturn undefined;\n\t\t}\n\t\tconst selector = Iterable.first(FormattingConflicts._selectors);\n\t\tif (selector) {\n\t\t\treturn await selector(formatter, document, mode, kind);\n\t\t}\n\t\treturn undefined;\n\t}\n}\n\nexport async function formatDocumentRangesWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentRangeFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst { documentRangeFormattingEditProvider: documentRangeFormattingEditProviderRegistry } = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = documentRangeFormattingEditProviderRegistry.ordered(model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.Selection);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentRangesWithProvider, selected, editorOrModel, rangeOrRanges, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentRangesWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentRangeFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\trangeOrRanges: Range | Range[],\n\ttoken: CancellationToken,\n\tuserGesture: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst logService = accessor.get(ILogService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\t// make sure that ranges don't overlap nor touch each other\n\tconst ranges: Range[] = [];\n\tlet len = 0;\n\tfor (const range of asArray(rangeOrRanges).sort(Range.compareRangesUsingStarts)) {\n\t\tif (len > 0 && Range.areIntersectingOrTouching(ranges[len - 1], range)) {\n\t\t\tranges[len - 1] = Range.fromPositions(ranges[len - 1].getStartPosition(), range.getEndPosition());\n\t\t} else {\n\t\t\tlen = ranges.push(range);\n\t\t}\n\t}\n\n\tconst computeEdits = async (range: Range) => {\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, range);\n\n\t\tconst result = (await provider.provideDocumentRangeFormattingEdits(\n\t\t\tmodel,\n\t\t\trange,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t)) || [];\n\n\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\n\t\treturn result;\n\t};\n\n\tconst hasIntersectingEdit = (a: TextEdit[], b: TextEdit[]) => {\n\t\tif (!a.length || !b.length) {\n\t\t\treturn false;\n\t\t}\n\t\t// quick exit if the list of ranges are completely unrelated [O(n)]\n\t\tconst mergedA = a.reduce((acc, val) => { return Range.plusRange(acc, val.range); }, a[0].range);\n\t\tif (!b.some(x => { return Range.intersectRanges(mergedA, x.range); })) {\n\t\t\treturn false;\n\t\t}\n\t\t// fallback to a complete check [O(n^2)]\n\t\tfor (const edit of a) {\n\t\t\tfor (const otherEdit of b) {\n\t\t\t\tif (Range.intersectRanges(edit.range, otherEdit.range)) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t};\n\n\tconst allEdits: TextEdit[] = [];\n\tconst rawEditsList: TextEdit[][] = [];\n\ttry {\n\t\tif (typeof provider.provideDocumentRangesFormattingEdits === 'function') {\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (request)`, provider.extensionId?.value, ranges);\n\t\t\tconst result = (await provider.provideDocumentRangesFormattingEdits(\n\t\t\t\tmodel,\n\t\t\t\tranges,\n\t\t\t\tmodel.getFormattingOptions(),\n\t\t\t\tcts.token\n\t\t\t)) || [];\n\t\t\tlogService.trace(`[format][provideDocumentRangeFormattingEdits] (response)`, provider.extensionId?.value, result);\n\t\t\trawEditsList.push(result);\n\t\t} else {\n\n\t\t\tfor (const range of ranges) {\n\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\trawEditsList.push(await computeEdits(range));\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < ranges.length; ++i) {\n\t\t\t\tfor (let j = i + 1; j < ranges.length; ++j) {\n\t\t\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (hasIntersectingEdit(rawEditsList[i], rawEditsList[j])) {\n\t\t\t\t\t\t// Merge ranges i and j into a single range, recompute the associated edits\n\t\t\t\t\t\tconst mergedRange = Range.plusRange(ranges[i], ranges[j]);\n\t\t\t\t\t\tconst edits = await computeEdits(mergedRange);\n\t\t\t\t\t\tranges.splice(j, 1);\n\t\t\t\t\t\tranges.splice(i, 1);\n\t\t\t\t\t\tranges.push(mergedRange);\n\t\t\t\t\t\trawEditsList.splice(j, 1);\n\t\t\t\t\t\trawEditsList.splice(i, 1);\n\t\t\t\t\t\trawEditsList.push(edits);\n\t\t\t\t\t\t// Restart scanning\n\t\t\t\t\t\ti = 0;\n\t\t\t\t\t\tj = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const rawEdits of rawEditsList) {\n\t\t\tif (cts.token.isCancellationRequested) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst minimalEdits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t\tif (minimalEdits) {\n\t\t\t\tallEdits.push(...minimalEdits);\n\t\t\t}\n\t\t}\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (allEdits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, allEdits, true);\n\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = allEdits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], allEdits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function formatDocumentWithSelectedProvider(\n\taccessor: ServicesAccessor,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\tprogress: IProgress<DocumentFormattingEditProvider>,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<void> {\n\n\tconst instaService = accessor.get(IInstantiationService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst model = isCodeEditor(editorOrModel) ? editorOrModel.getModel() : editorOrModel;\n\tconst provider = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tconst selected = await FormattingConflicts.select(provider, model, mode, FormattingKind.File);\n\tif (selected) {\n\t\tprogress.report(selected);\n\t\tawait instaService.invokeFunction(formatDocumentWithProvider, selected, editorOrModel, mode, token, userGesture);\n\t}\n}\n\nexport async function formatDocumentWithProvider(\n\taccessor: ServicesAccessor,\n\tprovider: DocumentFormattingEditProvider,\n\teditorOrModel: ITextModel | IActiveCodeEditor,\n\tmode: FormattingMode,\n\ttoken: CancellationToken,\n\tuserGesture?: boolean\n): Promise<boolean> {\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst accessibilitySignalService = accessor.get(IAccessibilitySignalService);\n\n\tlet model: ITextModel;\n\tlet cts: CancellationTokenSource;\n\tif (isCodeEditor(editorOrModel)) {\n\t\tmodel = editorOrModel.getModel();\n\t\tcts = new EditorStateCancellationTokenSource(editorOrModel, CodeEditorStateFlag.Value | CodeEditorStateFlag.Position, undefined, token);\n\t} else {\n\t\tmodel = editorOrModel;\n\t\tcts = new TextModelCancellationTokenSource(editorOrModel, token);\n\t}\n\n\tlet edits: TextEdit[] | undefined;\n\ttry {\n\t\tconst rawEdits = await provider.provideDocumentFormattingEdits(\n\t\t\tmodel,\n\t\t\tmodel.getFormattingOptions(),\n\t\t\tcts.token\n\t\t);\n\n\t\tedits = await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\n\t\tif (cts.token.isCancellationRequested) {\n\t\t\treturn true;\n\t\t}\n\n\t} finally {\n\t\tcts.dispose();\n\t}\n\n\tif (!edits || edits.length === 0) {\n\t\treturn false;\n\t}\n\n\tif (isCodeEditor(editorOrModel)) {\n\t\t// use editor to apply edits\n\t\tFormattingEdit.execute(editorOrModel, edits, mode !== FormattingMode.Silent);\n\n\t\tif (mode !== FormattingMode.Silent) {\n\t\t\teditorOrModel.revealPositionInCenterIfOutsideViewport(editorOrModel.getPosition(), ScrollType.Immediate);\n\t\t}\n\n\t} else {\n\t\t// use model to apply edits\n\t\tconst [{ range }] = edits;\n\t\tconst initialSelection = new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn);\n\t\tmodel.pushEditOperations([initialSelection], edits.map(edit => {\n\t\t\treturn {\n\t\t\t\ttext: edit.text,\n\t\t\t\trange: Range.lift(edit.range),\n\t\t\t\tforceMoveMarkers: true\n\t\t\t};\n\t\t}), undoEdits => {\n\t\t\tfor (const { range } of undoEdits) {\n\t\t\t\tif (Range.areIntersectingOrTouching(range, initialSelection)) {\n\t\t\t\t\treturn [new Selection(range.startLineNumber, range.startColumn, range.endLineNumber, range.endColumn)];\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t});\n\t}\n\taccessibilitySignalService.playSignal(AccessibilitySignal.format, { userGesture });\n\treturn true;\n}\n\nexport async function getDocumentRangeFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\trange: Range,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = languageFeaturesService.documentRangeFormattingEditProvider.ordered(model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentRangeFormattingEdits(model, range, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport async function getDocumentFormattingEditsUntilResult(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | undefined> {\n\n\tconst providers = getRealAndSyntheticDocumentFormattersOrdered(languageFeaturesService.documentFormattingEditProvider, languageFeaturesService.documentRangeFormattingEditProvider, model);\n\tfor (const provider of providers) {\n\t\tconst rawEdits = await Promise.resolve(provider.provideDocumentFormattingEdits(model, options, token)).catch(onUnexpectedExternalError);\n\t\tif (isNonEmptyArray(rawEdits)) {\n\t\t\treturn await workerService.computeMoreMinimalEdits(model.uri, rawEdits);\n\t\t}\n\t}\n\treturn undefined;\n}\n\nexport function getOnTypeFormattingEdits(\n\tworkerService: IEditorWorkerService,\n\tlanguageFeaturesService: ILanguageFeaturesService,\n\tmodel: ITextModel,\n\tposition: Position,\n\tch: string,\n\toptions: FormattingOptions,\n\ttoken: CancellationToken\n): Promise<TextEdit[] | null | undefined> {\n\n\tconst providers = languageFeaturesService.onTypeFormattingEditProvider.ordered(model);\n\n\tif (providers.length === 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\tif (providers[0].autoFormatTriggerCharacters.indexOf(ch) < 0) {\n\t\treturn Promise.resolve(undefined);\n\t}\n\n\treturn Promise.resolve(providers[0].provideOnTypeFormattingEdits(model, position, ch, options, token)).catch(onUnexpectedExternalError).then(edits => {\n\t\treturn workerService.computeMoreMinimalEdits(model.uri, edits);\n\t});\n}\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nCommandsRegistry.registerCommand('_executeFormatRangeProvider', async function (accessor, ...args: any[]) {\n\tconst [resource, range, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Range.isIRange(range));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentRangeFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, Range.lift(range), options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nCommandsRegistry.registerCommand('_executeFormatDocumentProvider', async function (accessor, ...args: any[]) {\n\tconst [resource, options] = args;\n\tassertType(URI.isUri(resource));\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getDocumentFormattingEditsUntilResult(workerService, languageFeaturesService, reference.object.textEditorModel, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nCommandsRegistry.registerCommand('_executeFormatOnTypeProvider', async function (accessor, ...args: any[]) {\n\tconst [resource, position, ch, options] = args;\n\tassertType(URI.isUri(resource));\n\tassertType(Position.isIPosition(position));\n\tassertType(typeof ch === 'string');\n\n\tconst resolverService = accessor.get(ITextModelService);\n\tconst workerService = accessor.get(IEditorWorkerService);\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\tconst reference = await resolverService.createModelReference(resource);\n\ttry {\n\t\treturn getOnTypeFormattingEdits(workerService, languageFeaturesService, reference.object.textEditorModel, Position.lift(position), ch, options, CancellationToken.None);\n\t} finally {\n\t\treference.dispose();\n\t}\n});\n"]}
@@ -185,7 +185,7 @@ class FormatDocumentAction extends EditorAction {
185
185
  constructor() {
186
186
  super({
187
187
  id: 'editor.action.formatDocument',
188
- label: nls.localize2(1015, "Format Document"),
188
+ label: nls.localize2(1014, "Format Document"),
189
189
  precondition: ContextKeyExpr.and(EditorContextKeys.notInCompositeEditor, EditorContextKeys.writable, EditorContextKeys.hasDocumentFormattingProvider),
190
190
  kbOpts: {
191
191
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -211,7 +211,7 @@ class FormatSelectionAction extends EditorAction {
211
211
  constructor() {
212
212
  super({
213
213
  id: 'editor.action.formatSelection',
214
- label: nls.localize2(1016, "Format Selection"),
214
+ label: nls.localize2(1015, "Format Selection"),
215
215
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasDocumentSelectionFormattingProvider),
216
216
  kbOpts: {
217
217
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -166,7 +166,7 @@ class MarkerNavigationAction extends EditorAction {
166
166
  }
167
167
  export class NextMarkerAction extends MarkerNavigationAction {
168
168
  static { this.ID = 'editor.action.marker.next'; }
169
- static { this.LABEL = nls.localize2(1021, "Go to Next Problem (Error, Warning, Info)"); }
169
+ static { this.LABEL = nls.localize2(1020, "Go to Next Problem (Error, Warning, Info)"); }
170
170
  constructor() {
171
171
  super(true, false, {
172
172
  id: NextMarkerAction.ID,
@@ -180,7 +180,7 @@ export class NextMarkerAction extends MarkerNavigationAction {
180
180
  menuOpts: {
181
181
  menuId: MarkerNavigationWidget.TitleMenu,
182
182
  title: NextMarkerAction.LABEL.value,
183
- icon: registerIcon('marker-navigation-next', Codicon.arrowDown, nls.localize(1017, 'Icon for goto next marker.')),
183
+ icon: registerIcon('marker-navigation-next', Codicon.arrowDown, nls.localize(1016, 'Icon for goto next marker.')),
184
184
  group: 'navigation',
185
185
  order: 1
186
186
  }
@@ -189,7 +189,7 @@ export class NextMarkerAction extends MarkerNavigationAction {
189
189
  }
190
190
  class PrevMarkerAction extends MarkerNavigationAction {
191
191
  static { this.ID = 'editor.action.marker.prev'; }
192
- static { this.LABEL = nls.localize2(1022, "Go to Previous Problem (Error, Warning, Info)"); }
192
+ static { this.LABEL = nls.localize2(1021, "Go to Previous Problem (Error, Warning, Info)"); }
193
193
  constructor() {
194
194
  super(false, false, {
195
195
  id: PrevMarkerAction.ID,
@@ -203,7 +203,7 @@ class PrevMarkerAction extends MarkerNavigationAction {
203
203
  menuOpts: {
204
204
  menuId: MarkerNavigationWidget.TitleMenu,
205
205
  title: PrevMarkerAction.LABEL.value,
206
- icon: registerIcon('marker-navigation-previous', Codicon.arrowUp, nls.localize(1018, 'Icon for goto previous marker.')),
206
+ icon: registerIcon('marker-navigation-previous', Codicon.arrowUp, nls.localize(1017, 'Icon for goto previous marker.')),
207
207
  group: 'navigation',
208
208
  order: 2
209
209
  }
@@ -214,7 +214,7 @@ class NextMarkerInFilesAction extends MarkerNavigationAction {
214
214
  constructor() {
215
215
  super(true, true, {
216
216
  id: 'editor.action.marker.nextInFiles',
217
- label: nls.localize2(1023, "Go to Next Problem in Files (Error, Warning, Info)"),
217
+ label: nls.localize2(1022, "Go to Next Problem in Files (Error, Warning, Info)"),
218
218
  precondition: undefined,
219
219
  kbOpts: {
220
220
  kbExpr: EditorContextKeys.focus,
@@ -223,7 +223,7 @@ class NextMarkerInFilesAction extends MarkerNavigationAction {
223
223
  },
224
224
  menuOpts: {
225
225
  menuId: MenuId.MenubarGoMenu,
226
- title: nls.localize(1019, "Next &&Problem"),
226
+ title: nls.localize(1018, "Next &&Problem"),
227
227
  group: '6_problem_nav',
228
228
  order: 1
229
229
  }
@@ -234,7 +234,7 @@ class PrevMarkerInFilesAction extends MarkerNavigationAction {
234
234
  constructor() {
235
235
  super(false, true, {
236
236
  id: 'editor.action.marker.prevInFiles',
237
- label: nls.localize2(1024, "Go to Previous Problem in Files (Error, Warning, Info)"),
237
+ label: nls.localize2(1023, "Go to Previous Problem in Files (Error, Warning, Info)"),
238
238
  precondition: undefined,
239
239
  kbOpts: {
240
240
  kbExpr: EditorContextKeys.focus,
@@ -243,7 +243,7 @@ class PrevMarkerInFilesAction extends MarkerNavigationAction {
243
243
  },
244
244
  menuOpts: {
245
245
  menuId: MenuId.MenubarGoMenu,
246
- title: nls.localize(1020, "Previous &&Problem"),
246
+ title: nls.localize(1019, "Previous &&Problem"),
247
247
  group: '6_problem_nav',
248
248
  order: 2
249
249
  }
@@ -174,19 +174,19 @@ class MessageWidget {
174
174
  let severityLabel = '';
175
175
  switch (marker.severity) {
176
176
  case MarkerSeverity.Error:
177
- severityLabel = nls.localize(1025, "Error");
177
+ severityLabel = nls.localize(1024, "Error");
178
178
  break;
179
179
  case MarkerSeverity.Warning:
180
- severityLabel = nls.localize(1026, "Warning");
180
+ severityLabel = nls.localize(1025, "Warning");
181
181
  break;
182
182
  case MarkerSeverity.Info:
183
- severityLabel = nls.localize(1027, "Info");
183
+ severityLabel = nls.localize(1026, "Info");
184
184
  break;
185
185
  case MarkerSeverity.Hint:
186
- severityLabel = nls.localize(1028, "Hint");
186
+ severityLabel = nls.localize(1027, "Hint");
187
187
  break;
188
188
  }
189
- let ariaLabel = nls.localize(1029, "{0} at {1}. ", severityLabel, marker.startLineNumber + ':' + marker.startColumn);
189
+ let ariaLabel = nls.localize(1028, "{0} at {1}. ", severityLabel, marker.startLineNumber + ':' + marker.startColumn);
190
190
  const model = this._editor.getModel();
191
191
  if (model && (marker.startLineNumber <= model.getLineCount()) && (marker.startLineNumber >= 1)) {
192
192
  const lineContent = model.getLineContent(marker.startLineNumber);
@@ -286,8 +286,8 @@ let MarkerNavigationWidget = class MarkerNavigationWidget extends PeekViewWidget
286
286
  const model = this.editor.getModel();
287
287
  if (model) {
288
288
  const detail = markerCount > 1
289
- ? nls.localize(1030, "{0} of {1} problems", markerIdx, markerCount)
290
- : nls.localize(1031, "{0} of {1} problem", markerIdx, markerCount);
289
+ ? nls.localize(1029, "{0} of {1} problems", markerIdx, markerCount)
290
+ : nls.localize(1030, "{0} of {1} problem", markerIdx, markerCount);
291
291
  this.setTitle(basename(model.uri), detail);
292
292
  }
293
293
  this._icon.className = `codicon ${SeverityIcon.className(MarkerSeverity.toSeverity(this._severity))}`;
@@ -331,11 +331,11 @@ export { MarkerNavigationWidget };
331
331
  const errorDefault = oneOf(editorErrorForeground, editorErrorBorder);
332
332
  const warningDefault = oneOf(editorWarningForeground, editorWarningBorder);
333
333
  const infoDefault = oneOf(editorInfoForeground, editorInfoBorder);
334
- const editorMarkerNavigationError = registerColor('editorMarkerNavigationError.background', { dark: errorDefault, light: errorDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize(1032, 'Editor marker navigation widget error color.'));
335
- const editorMarkerNavigationErrorHeader = registerColor('editorMarkerNavigationError.headerBackground', { dark: transparent(editorMarkerNavigationError, .1), light: transparent(editorMarkerNavigationError, .1), hcDark: null, hcLight: null }, nls.localize(1033, 'Editor marker navigation widget error heading background.'));
336
- const editorMarkerNavigationWarning = registerColor('editorMarkerNavigationWarning.background', { dark: warningDefault, light: warningDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize(1034, 'Editor marker navigation widget warning color.'));
337
- const editorMarkerNavigationWarningHeader = registerColor('editorMarkerNavigationWarning.headerBackground', { dark: transparent(editorMarkerNavigationWarning, .1), light: transparent(editorMarkerNavigationWarning, .1), hcDark: '#0C141F', hcLight: transparent(editorMarkerNavigationWarning, .2) }, nls.localize(1035, 'Editor marker navigation widget warning heading background.'));
338
- const editorMarkerNavigationInfo = registerColor('editorMarkerNavigationInfo.background', { dark: infoDefault, light: infoDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize(1036, 'Editor marker navigation widget info color.'));
339
- const editorMarkerNavigationInfoHeader = registerColor('editorMarkerNavigationInfo.headerBackground', { dark: transparent(editorMarkerNavigationInfo, .1), light: transparent(editorMarkerNavigationInfo, .1), hcDark: null, hcLight: null }, nls.localize(1037, 'Editor marker navigation widget info heading background.'));
340
- const editorMarkerNavigationBackground = registerColor('editorMarkerNavigation.background', editorBackground, nls.localize(1038, 'Editor marker navigation widget background.'));
334
+ const editorMarkerNavigationError = registerColor('editorMarkerNavigationError.background', { dark: errorDefault, light: errorDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize(1031, 'Editor marker navigation widget error color.'));
335
+ const editorMarkerNavigationErrorHeader = registerColor('editorMarkerNavigationError.headerBackground', { dark: transparent(editorMarkerNavigationError, .1), light: transparent(editorMarkerNavigationError, .1), hcDark: null, hcLight: null }, nls.localize(1032, 'Editor marker navigation widget error heading background.'));
336
+ const editorMarkerNavigationWarning = registerColor('editorMarkerNavigationWarning.background', { dark: warningDefault, light: warningDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize(1033, 'Editor marker navigation widget warning color.'));
337
+ const editorMarkerNavigationWarningHeader = registerColor('editorMarkerNavigationWarning.headerBackground', { dark: transparent(editorMarkerNavigationWarning, .1), light: transparent(editorMarkerNavigationWarning, .1), hcDark: '#0C141F', hcLight: transparent(editorMarkerNavigationWarning, .2) }, nls.localize(1034, 'Editor marker navigation widget warning heading background.'));
338
+ const editorMarkerNavigationInfo = registerColor('editorMarkerNavigationInfo.background', { dark: infoDefault, light: infoDefault, hcDark: contrastBorder, hcLight: contrastBorder }, nls.localize(1035, 'Editor marker navigation widget info color.'));
339
+ const editorMarkerNavigationInfoHeader = registerColor('editorMarkerNavigationInfo.headerBackground', { dark: transparent(editorMarkerNavigationInfo, .1), light: transparent(editorMarkerNavigationInfo, .1), hcDark: null, hcLight: null }, nls.localize(1036, 'Editor marker navigation widget info heading background.'));
340
+ const editorMarkerNavigationBackground = registerColor('editorMarkerNavigation.background', editorBackground, nls.localize(1037, 'Editor marker navigation widget background.'));
341
341
  //# sourceMappingURL=gotoErrorWidget.js.map