monaco-editor-core 0.56.0-dev-20251218 → 0.56.0-dev-20251219

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 (173) 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 +2 -0
  18. package/esm/vs/base/common/fuzzyScorer.js +3 -2
  19. package/esm/vs/base/common/fuzzyScorer.js.map +1 -1
  20. package/esm/vs/editor/common/core/editorColorRegistry.js +34 -33
  21. package/esm/vs/editor/common/core/editorColorRegistry.js.map +1 -1
  22. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js +3 -3
  23. package/esm/vs/editor/common/cursor/cursorTypeEditOperations.js.map +1 -1
  24. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  25. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  26. package/esm/vs/editor/common/languages.js +56 -56
  27. package/esm/vs/editor/common/model/editStack.js +1 -1
  28. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  29. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  30. package/esm/vs/editor/common/viewModel/viewModelImpl.js +4 -15
  31. package/esm/vs/editor/common/viewModel/viewModelImpl.js.map +1 -1
  32. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  33. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +18 -9
  34. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js.map +1 -1
  35. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  36. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  37. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  38. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  39. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  40. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  41. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  42. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  43. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  44. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  45. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  46. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  47. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  48. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  49. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  50. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  51. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  52. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  53. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  54. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  55. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  56. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  57. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  58. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  59. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  60. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  61. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  62. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  63. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  64. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  65. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  66. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  67. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  68. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  69. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  70. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  71. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  72. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  73. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  74. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  75. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  76. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  77. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  78. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  79. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  80. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  81. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  82. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  83. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
  84. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
  85. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  86. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  87. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  88. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +1 -1
  89. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  90. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +4 -4
  91. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  92. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  93. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
  94. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
  95. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  96. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  97. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  98. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  99. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  100. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  101. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  102. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  103. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  104. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  105. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  106. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  107. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
  108. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  109. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  110. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  111. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  112. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  113. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  114. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  115. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  116. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
  117. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +11 -11
  118. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  119. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  120. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  121. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  122. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  123. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  124. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  125. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  126. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  127. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  128. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  129. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  130. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +3 -3
  131. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  132. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  133. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  134. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  135. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  136. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  137. package/esm/vs/platform/actions/common/menuService.js +2 -2
  138. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  139. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  140. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  141. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  142. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  143. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  144. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  145. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  146. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  147. package/esm/vs/platform/list/browser/listService.js +27 -27
  148. package/esm/vs/platform/markers/common/markerService.js +2 -2
  149. package/esm/vs/platform/markers/common/markers.js +6 -6
  150. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  151. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  152. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  153. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  154. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  155. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  156. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +2 -2
  157. package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
  158. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  159. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  160. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -18
  161. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  162. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  163. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  164. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  165. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  166. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  167. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  168. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  169. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  170. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  171. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  172. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  173. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/folding/browser/folding.ts"],"names":[],"mappings":"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","file":"folding.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 { CancelablePromise, createCancelablePromise, Delayer, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { KeyChord, KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport * as types from '../../../../base/common/types.js';\nimport './folding.css';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, registerInstantiatedEditorAction, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { IPosition } from '../../../common/core/position.js';\nimport { IRange } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { IModelContentChangedEvent } from '../../../common/textModelEvents.js';\nimport { FoldingRange, FoldingRangeKind, FoldingRangeProvider } from '../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { CollapseMemento, FoldingModel, getNextFoldLine, getParentFoldLine as getParentFoldLine, getPreviousFoldLine, setCollapseStateAtLevel, setCollapseStateForMatchingLines, setCollapseStateForRest, setCollapseStateForType, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateUp, toggleCollapseState } from './foldingModel.js';\nimport { HiddenRangeModel } from './hiddenRangeModel.js';\nimport { IndentRangeProvider } from './indentRangeProvider.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { FoldingDecorationProvider } from './foldingDecorations.js';\nimport { FoldingRegion, FoldingRegions, FoldRange, FoldSource, ILineRange } from './foldingRanges.js';\nimport { SyntaxRangeProvider } from './syntaxRangeProvider.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nconst CONTEXT_FOLDING_ENABLED = new RawContextKey<boolean>('foldingEnabled', false);\n\nexport interface RangeProvider {\n\treadonly id: string;\n\tcompute(cancelationToken: CancellationToken): Promise<FoldingRegions | null>;\n\tdispose(): void;\n}\n\ninterface FoldingStateMemento {\n\tcollapsedRegions?: CollapseMemento;\n\tlineCount?: number;\n\tprovider?: string;\n\tfoldedImports?: boolean;\n}\n\nexport interface FoldingLimitReporter {\n\treadonly limit: number;\n\tupdate(computed: number, limited: number | false): void;\n}\n\nexport type FoldingRangeProviderSelector = (provider: FoldingRangeProvider[], document: ITextModel) => FoldingRangeProvider[] | undefined;\n\nexport class FoldingController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.folding';\n\n\tpublic static get(editor: ICodeEditor): FoldingController | null {\n\t\treturn editor.getContribution<FoldingController>(FoldingController.ID);\n\t}\n\n\tprivate static _foldingRangeSelector: FoldingRangeProviderSelector | undefined;\n\n\tpublic static getFoldingRangeProviders(languageFeaturesService: ILanguageFeaturesService, model: ITextModel): FoldingRangeProvider[] {\n\t\tconst foldingRangeProviders = languageFeaturesService.foldingRangeProvider.ordered(model);\n\t\treturn (FoldingController._foldingRangeSelector?.(foldingRangeProviders, model)) ?? foldingRangeProviders;\n\t}\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate _isEnabled: boolean;\n\tprivate _useFoldingProviders: boolean;\n\tprivate _unfoldOnClickAfterEndOfLine: boolean;\n\tprivate _restoringViewState: boolean;\n\tprivate _foldingImportsByDefault: boolean;\n\tprivate _currentModelHasFoldedImports: boolean;\n\n\tprivate readonly foldingDecorationProvider: FoldingDecorationProvider;\n\n\tprivate foldingModel: FoldingModel | null;\n\tprivate hiddenRangeModel: HiddenRangeModel | null;\n\n\tprivate rangeProvider: RangeProvider | null;\n\tprivate foldingRegionPromise: CancelablePromise<FoldingRegions | null> | null;\n\n\tprivate foldingModelPromise: Promise<FoldingModel | null> | null;\n\tprivate updateScheduler: Delayer<FoldingModel | null> | null;\n\tprivate readonly updateDebounceInfo: IFeatureDebounceInformation;\n\n\tprivate foldingEnabled: IContextKey<boolean>;\n\tprivate cursorChangedScheduler: RunOnceScheduler | null;\n\n\tprivate readonly localToDispose = this._register(new DisposableStore());\n\tprivate mouseDownInfo: { lineNumber: number; iconClicked: boolean } | null;\n\n\tpublic readonly _foldingLimitReporter: RangesLimitReporter;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextKeyService private readonly contextKeyService: IContextKeyService,\n\t\t@ILanguageConfigurationService private readonly languageConfigurationService: ILanguageConfigurationService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService private readonly languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis.editor = editor;\n\n\t\tthis._foldingLimitReporter = this._register(new RangesLimitReporter(editor));\n\n\t\tconst options = this.editor.getOptions();\n\t\tthis._isEnabled = options.get(EditorOption.folding);\n\t\tthis._useFoldingProviders = options.get(EditorOption.foldingStrategy) !== 'indentation';\n\t\tthis._unfoldOnClickAfterEndOfLine = options.get(EditorOption.unfoldOnClickAfterEndOfLine);\n\t\tthis._restoringViewState = false;\n\t\tthis._currentModelHasFoldedImports = false;\n\t\tthis._foldingImportsByDefault = options.get(EditorOption.foldingImportsByDefault);\n\t\tthis.updateDebounceInfo = languageFeatureDebounceService.for(languageFeaturesService.foldingRangeProvider, 'Folding', { min: 200 });\n\n\t\tthis.foldingModel = null;\n\t\tthis.hiddenRangeModel = null;\n\t\tthis.rangeProvider = null;\n\t\tthis.foldingRegionPromise = null;\n\t\tthis.foldingModelPromise = null;\n\t\tthis.updateScheduler = null;\n\t\tthis.cursorChangedScheduler = null;\n\t\tthis.mouseDownInfo = null;\n\n\t\tthis.foldingDecorationProvider = new FoldingDecorationProvider(editor);\n\t\tthis.foldingDecorationProvider.showFoldingControls = options.get(EditorOption.showFoldingControls);\n\t\tthis.foldingDecorationProvider.showFoldingHighlights = options.get(EditorOption.foldingHighlight);\n\t\tthis.foldingEnabled = CONTEXT_FOLDING_ENABLED.bindTo(this.contextKeyService);\n\t\tthis.foldingEnabled.set(this._isEnabled);\n\n\t\tthis._register(this.editor.onDidChangeModel(() => this.onModelChanged()));\n\n\t\tthis._register(this.editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.folding)) {\n\t\t\t\tthis._isEnabled = this.editor.getOptions().get(EditorOption.folding);\n\t\t\t\tthis.foldingEnabled.set(this._isEnabled);\n\t\t\t\tthis.onModelChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.foldingMaximumRegions)) {\n\t\t\t\tthis.onModelChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.showFoldingControls) || e.hasChanged(EditorOption.foldingHighlight)) {\n\t\t\t\tconst options = this.editor.getOptions();\n\t\t\t\tthis.foldingDecorationProvider.showFoldingControls = options.get(EditorOption.showFoldingControls);\n\t\t\t\tthis.foldingDecorationProvider.showFoldingHighlights = options.get(EditorOption.foldingHighlight);\n\t\t\t\tthis.triggerFoldingModelChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.foldingStrategy)) {\n\t\t\t\tthis._useFoldingProviders = this.editor.getOptions().get(EditorOption.foldingStrategy) !== 'indentation';\n\t\t\t\tthis.onFoldingStrategyChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.unfoldOnClickAfterEndOfLine)) {\n\t\t\t\tthis._unfoldOnClickAfterEndOfLine = this.editor.getOptions().get(EditorOption.unfoldOnClickAfterEndOfLine);\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.foldingImportsByDefault)) {\n\t\t\t\tthis._foldingImportsByDefault = this.editor.getOptions().get(EditorOption.foldingImportsByDefault);\n\t\t\t}\n\t\t}));\n\t\tthis.onModelChanged();\n\t}\n\n\t/**\n\t * Store view state.\n\t */\n\tpublic saveViewState(): FoldingStateMemento | undefined {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this._isEnabled || model.isTooLargeForTokenization()) {\n\t\t\treturn {};\n\t\t}\n\t\tif (this.foldingModel) { // disposed ?\n\t\t\tconst collapsedRegions = this.foldingModel.getMemento();\n\t\t\tconst provider = this.rangeProvider ? this.rangeProvider.id : undefined;\n\t\t\treturn { collapsedRegions, lineCount: model.getLineCount(), provider, foldedImports: this._currentModelHasFoldedImports };\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Restore view state.\n\t */\n\tpublic restoreViewState(state: FoldingStateMemento): void {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (!state) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._currentModelHasFoldedImports = !!state.foldedImports;\n\t\tif (state.collapsedRegions && state.collapsedRegions.length > 0 && this.foldingModel) {\n\t\t\tthis._restoringViewState = true;\n\t\t\ttry {\n\t\t\t\tthis.foldingModel.applyMemento(state.collapsedRegions);\n\t\t\t} finally {\n\t\t\t\tthis._restoringViewState = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onModelChanged(): void {\n\t\tthis.localToDispose.clear();\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!this._isEnabled || !model || model.isTooLargeForTokenization()) {\n\t\t\t// huge files get no view model, so they cannot support hidden areas\n\t\t\treturn;\n\t\t}\n\n\t\tthis._currentModelHasFoldedImports = false;\n\t\tthis.foldingModel = new FoldingModel(model, this.foldingDecorationProvider);\n\t\tthis.localToDispose.add(this.foldingModel);\n\n\t\tthis.hiddenRangeModel = new HiddenRangeModel(this.foldingModel);\n\t\tthis.localToDispose.add(this.hiddenRangeModel);\n\t\tthis.localToDispose.add(this.hiddenRangeModel.onDidChange(hr => this.onHiddenRangesChanges(hr)));\n\n\t\tthis.updateScheduler = new Delayer<FoldingModel>(this.updateDebounceInfo.get(model));\n\t\tthis.localToDispose.add(this.updateScheduler);\n\n\t\tthis.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);\n\t\tthis.localToDispose.add(this.cursorChangedScheduler);\n\t\tthis.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(() => this.onFoldingStrategyChanged()));\n\t\tthis.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(() => this.onFoldingStrategyChanged())); // covers model language changes as well\n\t\tthis.localToDispose.add(this.editor.onDidChangeModelContent(e => this.onDidChangeModelContent(e)));\n\t\tthis.localToDispose.add(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));\n\t\tthis.localToDispose.add(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));\n\t\tthis.localToDispose.add(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));\n\t\tthis.localToDispose.add({\n\t\t\tdispose: () => {\n\t\t\t\tif (this.foldingRegionPromise) {\n\t\t\t\t\tthis.foldingRegionPromise.cancel();\n\t\t\t\t\tthis.foldingRegionPromise = null;\n\t\t\t\t}\n\t\t\t\tthis.updateScheduler?.cancel();\n\t\t\t\tthis.updateScheduler = null;\n\t\t\t\tthis.foldingModel = null;\n\t\t\t\tthis.foldingModelPromise = null;\n\t\t\t\tthis.hiddenRangeModel = null;\n\t\t\t\tthis.cursorChangedScheduler = null;\n\t\t\t\tthis.rangeProvider?.dispose();\n\t\t\t\tthis.rangeProvider = null;\n\t\t\t}\n\t\t});\n\t\tthis.triggerFoldingModelChanged();\n\t}\n\n\tprivate onFoldingStrategyChanged() {\n\t\tthis.rangeProvider?.dispose();\n\t\tthis.rangeProvider = null;\n\t\tthis.triggerFoldingModelChanged();\n\t}\n\n\tprivate getRangeProvider(editorModel: ITextModel): RangeProvider {\n\t\tif (this.rangeProvider) {\n\t\t\treturn this.rangeProvider;\n\t\t}\n\t\tconst indentRangeProvider = new IndentRangeProvider(editorModel, this.languageConfigurationService, this._foldingLimitReporter);\n\t\tthis.rangeProvider = indentRangeProvider; // fallback\n\t\tif (this._useFoldingProviders && this.foldingModel) {\n\t\t\tconst selectedProviders = FoldingController.getFoldingRangeProviders(this.languageFeaturesService, editorModel);\n\t\t\tif (selectedProviders.length > 0) {\n\t\t\t\tthis.rangeProvider = new SyntaxRangeProvider(editorModel, selectedProviders, () => this.triggerFoldingModelChanged(), this._foldingLimitReporter, indentRangeProvider);\n\t\t\t}\n\t\t}\n\t\treturn this.rangeProvider;\n\t}\n\n\tpublic getFoldingModel(): Promise<FoldingModel | null> | null {\n\t\treturn this.foldingModelPromise;\n\t}\n\n\tprivate onDidChangeModelContent(e: IModelContentChangedEvent) {\n\t\tthis.hiddenRangeModel?.notifyChangeModelContent(e);\n\t\tthis.triggerFoldingModelChanged();\n\t}\n\n\n\tpublic triggerFoldingModelChanged() {\n\t\tif (this.updateScheduler) {\n\t\t\tif (this.foldingRegionPromise) {\n\t\t\t\tthis.foldingRegionPromise.cancel();\n\t\t\t\tthis.foldingRegionPromise = null;\n\t\t\t}\n\t\t\tthis.foldingModelPromise = this.updateScheduler.trigger(() => {\n\t\t\t\tconst foldingModel = this.foldingModel;\n\t\t\t\tif (!foldingModel) { // null if editor has been disposed, or folding turned off\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst sw = new StopWatch();\n\t\t\t\tconst provider = this.getRangeProvider(foldingModel.textModel);\n\t\t\t\tconst foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => provider.compute(token));\n\t\t\t\treturn foldingRegionPromise.then(foldingRanges => {\n\t\t\t\t\tif (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?\n\t\t\t\t\t\tlet scrollState: StableEditorScrollState | undefined;\n\n\t\t\t\t\t\tif (this._foldingImportsByDefault && !this._currentModelHasFoldedImports) {\n\t\t\t\t\t\t\tconst hasChanges = foldingRanges.setCollapsedAllOfType(FoldingRangeKind.Imports.value, true);\n\t\t\t\t\t\t\tif (hasChanges) {\n\t\t\t\t\t\t\t\tscrollState = StableEditorScrollState.capture(this.editor);\n\t\t\t\t\t\t\t\tthis._currentModelHasFoldedImports = hasChanges;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// some cursors might have moved into hidden regions, make sure they are in expanded regions\n\t\t\t\t\t\tconst selections = this.editor.getSelections();\n\t\t\t\t\t\tfoldingModel.update(foldingRanges, toSelectedLines(selections));\n\n\t\t\t\t\t\tscrollState?.restore(this.editor);\n\n\t\t\t\t\t\t// update debounce info\n\t\t\t\t\t\tconst newValue = this.updateDebounceInfo.update(foldingModel.textModel, sw.elapsed());\n\t\t\t\t\t\tif (this.updateScheduler) {\n\t\t\t\t\t\t\tthis.updateScheduler.defaultDelay = newValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn foldingModel;\n\t\t\t\t});\n\t\t\t}).then(undefined, (err) => {\n\t\t\t\tonUnexpectedError(err);\n\t\t\t\treturn null;\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate onHiddenRangesChanges(hiddenRanges: IRange[]) {\n\t\tif (this.hiddenRangeModel && hiddenRanges.length && !this._restoringViewState) {\n\t\t\tconst selections = this.editor.getSelections();\n\t\t\tif (selections) {\n\t\t\t\tif (this.hiddenRangeModel.adjustSelections(selections)) {\n\t\t\t\t\tthis.editor.setSelections(selections);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.editor.setHiddenAreas(hiddenRanges, this);\n\t}\n\n\tprivate onCursorPositionChanged() {\n\t\tif (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {\n\t\t\tthis.cursorChangedScheduler!.schedule();\n\t\t}\n\t}\n\n\tprivate revealCursor() {\n\t\tconst foldingModel = this.getFoldingModel();\n\t\tif (!foldingModel) {\n\t\t\treturn;\n\t\t}\n\t\tfoldingModel.then(foldingModel => { // null is returned if folding got disabled in the meantime\n\t\t\tif (foldingModel) {\n\t\t\t\tconst selections = this.editor.getSelections();\n\t\t\t\tif (selections && selections.length > 0) {\n\t\t\t\t\tconst toToggle: FoldingRegion[] = [];\n\t\t\t\t\tfor (const selection of selections) {\n\t\t\t\t\t\tconst lineNumber = selection.selectionStartLineNumber;\n\t\t\t\t\t\tif (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {\n\t\t\t\t\t\t\ttoToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (toToggle.length) {\n\t\t\t\t\t\tfoldingModel.toggleCollapseState(toToggle);\n\t\t\t\t\t\tthis.reveal(selections[0].getPosition());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}).then(undefined, onUnexpectedError);\n\n\t}\n\n\tprivate onEditorMouseDown(e: IEditorMouseEvent): void {\n\t\tthis.mouseDownInfo = null;\n\n\n\t\tif (!this.hiddenRangeModel || !e.target || !e.target.range) {\n\t\t\treturn;\n\t\t}\n\t\tif (!e.event.leftButton && !e.event.middleButton) {\n\t\t\treturn;\n\t\t}\n\t\tconst range = e.target.range;\n\t\tlet iconClicked = false;\n\t\tswitch (e.target.type) {\n\t\t\tcase MouseTargetType.GUTTER_LINE_DECORATIONS: {\n\t\t\t\tconst data = e.target.detail;\n\t\t\t\tconst offsetLeftInGutter = e.target.element!.offsetLeft;\n\t\t\t\tconst gutterOffsetX = data.offsetX - offsetLeftInGutter;\n\n\t\t\t\t// const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;\n\n\t\t\t\t// TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff\n\t\t\t\tif (gutterOffsetX < 4) { // the whitespace between the border and the real folding icon border is 4px\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ticonClicked = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase MouseTargetType.CONTENT_EMPTY: {\n\t\t\t\tif (this._unfoldOnClickAfterEndOfLine && this.hiddenRangeModel.hasRanges()) {\n\t\t\t\t\tconst data = e.target.detail;\n\t\t\t\t\tif (!data.isAfterLines) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase MouseTargetType.CONTENT_TEXT: {\n\t\t\t\tif (this.hiddenRangeModel.hasRanges()) {\n\t\t\t\t\tconst model = this.editor.getModel();\n\t\t\t\t\tif (model && range.startColumn === model.getLineMaxColumn(range.startLineNumber)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tthis.mouseDownInfo = { lineNumber: range.startLineNumber, iconClicked };\n\t}\n\n\tprivate onEditorMouseUp(e: IEditorMouseEvent): void {\n\t\tconst foldingModel = this.foldingModel;\n\t\tif (!foldingModel || !this.mouseDownInfo || !e.target) {\n\t\t\treturn;\n\t\t}\n\t\tconst lineNumber = this.mouseDownInfo.lineNumber;\n\t\tconst iconClicked = this.mouseDownInfo.iconClicked;\n\n\t\tconst range = e.target.range;\n\t\tif (!range || range.startLineNumber !== lineNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (iconClicked) {\n\t\t\tif (e.target.type !== MouseTargetType.GUTTER_LINE_DECORATIONS) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tconst model = this.editor.getModel();\n\t\t\tif (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst region = foldingModel.getRegionAtLine(lineNumber);\n\t\tif (region && region.startLineNumber === lineNumber) {\n\t\t\tconst isCollapsed = region.isCollapsed;\n\t\t\tif (iconClicked || isCollapsed) {\n\t\t\t\tconst surrounding = e.event.altKey;\n\t\t\t\tlet toToggle = [];\n\t\t\t\tif (surrounding) {\n\t\t\t\t\tconst filter = (otherRegion: FoldingRegion) => !otherRegion.containedBy(region) && !region.containedBy(otherRegion);\n\t\t\t\t\tconst toMaybeToggle = foldingModel.getRegionsInside(null, filter);\n\t\t\t\t\tfor (const r of toMaybeToggle) {\n\t\t\t\t\t\tif (r.isCollapsed) {\n\t\t\t\t\t\t\ttoToggle.push(r);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// if any surrounding regions are folded, unfold those. Otherwise, fold all surrounding\n\t\t\t\t\tif (toToggle.length === 0) {\n\t\t\t\t\t\ttoToggle = toMaybeToggle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst recursive = e.event.middleButton || e.event.shiftKey;\n\t\t\t\t\tif (recursive) {\n\t\t\t\t\t\tfor (const r of foldingModel.getRegionsInside(region)) {\n\t\t\t\t\t\t\tif (r.isCollapsed === isCollapsed) {\n\t\t\t\t\t\t\t\ttoToggle.push(r);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// when recursive, first only collapse all children. If all are already folded or there are no children, also fold parent.\n\t\t\t\t\tif (isCollapsed || !recursive || toToggle.length === 0) {\n\t\t\t\t\t\ttoToggle.push(region);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfoldingModel.toggleCollapseState(toToggle);\n\t\t\t\tthis.reveal({ lineNumber, column: 1 });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic reveal(position: IPosition): void {\n\t\tthis.editor.revealPositionInCenterIfOutsideViewport(position, ScrollType.Smooth);\n\t}\n}\n\nexport class RangesLimitReporter extends Disposable implements FoldingLimitReporter {\n\tconstructor(private readonly editor: ICodeEditor) {\n\t\tsuper();\n\t}\n\n\tpublic get limit() {\n\t\treturn this.editor.getOptions().get(EditorOption.foldingMaximumRegions);\n\t}\n\n\tprivate _onDidChange = this._register(new Emitter<void>());\n\n\tprivate _computed: number = 0;\n\tprivate _limited: number | false = false;\n\tpublic update(computed: number, limited: number | false) {\n\t\tif (computed !== this._computed || limited !== this._limited) {\n\t\t\tthis._computed = computed;\n\t\t\tthis._limited = limited;\n\t\t\tthis._onDidChange.fire();\n\t\t}\n\t}\n}\n\nabstract class FoldingAction<T> extends EditorAction {\n\n\tabstract invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: T, languageConfigurationService: ILanguageConfigurationService): void;\n\n\tpublic override runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: T): void | Promise<void> {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\t\tconst foldingController = FoldingController.get(editor);\n\t\tif (!foldingController) {\n\t\t\treturn;\n\t\t}\n\t\tconst foldingModelPromise = foldingController.getFoldingModel();\n\t\tif (foldingModelPromise) {\n\t\t\tthis.reportTelemetry(accessor, editor);\n\t\t\treturn foldingModelPromise.then(foldingModel => {\n\t\t\t\tif (foldingModel) {\n\t\t\t\t\tthis.invoke(foldingController, foldingModel, editor, args, languageConfigurationService);\n\t\t\t\t\tconst selection = editor.getSelection();\n\t\t\t\t\tif (selection) {\n\t\t\t\t\t\tfoldingController.reveal(selection.getStartPosition());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected getSelectedLines(editor: ICodeEditor) {\n\t\tconst selections = editor.getSelections();\n\t\treturn selections ? selections.map(s => s.startLineNumber) : [];\n\t}\n\n\tprotected getLineNumbers(args: FoldingArguments, editor: ICodeEditor) {\n\t\tif (args && args.selectionLines) {\n\t\t\treturn args.selectionLines.map(l => l + 1); // to 0-bases line numbers\n\t\t}\n\t\treturn this.getSelectedLines(editor);\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, _editor: ICodeEditor): void {\n\t}\n}\n\nexport interface SelectedLines {\n\tstartsInside(startLine: number, endLine: number): boolean;\n}\n\nexport function toSelectedLines(selections: Selection[] | null): SelectedLines {\n\tif (!selections || selections.length === 0) {\n\t\treturn {\n\t\t\tstartsInside: () => false\n\t\t};\n\t}\n\treturn {\n\t\tstartsInside(startLine: number, endLine: number): boolean {\n\t\t\tfor (const s of selections) {\n\t\t\t\tconst line = s.startLineNumber;\n\t\t\t\tif (line >= startLine && line <= endLine) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t};\n}\n\ninterface FoldingArguments {\n\tlevels?: number;\n\tdirection?: 'up' | 'down';\n\tselectionLines?: number[];\n}\n\nfunction foldingArgumentsConstraint(args: unknown) {\n\tif (!types.isUndefined(args)) {\n\t\tif (!types.isObject(args)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst foldingArgs: FoldingArguments = args;\n\t\tif (!types.isUndefined(foldingArgs.levels) && !types.isNumber(foldingArgs.levels)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!types.isUndefined(foldingArgs.direction) && !types.isString(foldingArgs.direction)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!types.isUndefined(foldingArgs.selectionLines) && (!Array.isArray(foldingArgs.selectionLines) || !foldingArgs.selectionLines.every(types.isNumber))) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nclass UnfoldAction extends FoldingAction<FoldingArguments> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfold',\n\t\t\tlabel: nls.localize2('unfoldAction.label', \"Unfold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.BracketRight,\n\t\t\t\tmac: {\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.BracketRight\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tdescription: 'Unfold the content in the editor',\n\t\t\t\targs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Unfold editor argument',\n\t\t\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tconstraint: foldingArgumentsConstraint,\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t'type': 'object',\n\t\t\t\t\t\t\t'properties': {\n\t\t\t\t\t\t\t\t'levels': {\n\t\t\t\t\t\t\t\t\t'type': 'number',\n\t\t\t\t\t\t\t\t\t'default': 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'direction': {\n\t\t\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t\t\t'enum': ['up', 'down'],\n\t\t\t\t\t\t\t\t\t'default': 'down'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'selectionLines': {\n\t\t\t\t\t\t\t\t\t'type': 'array',\n\t\t\t\t\t\t\t\t\t'items': {\n\t\t\t\t\t\t\t\t\t\t'type': 'number'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {\n\t\tconst levels = args && args.levels || 1;\n\t\tconst lineNumbers = this.getLineNumbers(args, editor);\n\t\tif (args && args.direction === 'up') {\n\t\t\tsetCollapseStateLevelsUp(foldingModel, false, levels, lineNumbers);\n\t\t} else {\n\t\t\tsetCollapseStateLevelsDown(foldingModel, false, levels, lineNumbers);\n\t\t}\n\t}\n}\n\nclass UnFoldRecursivelyAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldRecursively',\n\t\t\tlabel: nls.localize2('unFoldRecursivelyAction.label', \"Unfold Recursively\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.BracketRight),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, _args: unknown): void {\n\t\tsetCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));\n\t}\n}\n\nclass FoldAction extends FoldingAction<FoldingArguments> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.fold',\n\t\t\tlabel: nls.localize2('foldAction.label', \"Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.BracketLeft,\n\t\t\t\tmac: {\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.BracketLeft\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tdescription: 'Fold the content in the editor',\n\t\t\t\targs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Fold editor argument',\n\t\t\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tconstraint: foldingArgumentsConstraint,\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t'type': 'object',\n\t\t\t\t\t\t\t'properties': {\n\t\t\t\t\t\t\t\t'levels': {\n\t\t\t\t\t\t\t\t\t'type': 'number',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'direction': {\n\t\t\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t\t\t'enum': ['up', 'down'],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'selectionLines': {\n\t\t\t\t\t\t\t\t\t'type': 'array',\n\t\t\t\t\t\t\t\t\t'items': {\n\t\t\t\t\t\t\t\t\t\t'type': 'number'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {\n\t\tconst lineNumbers = this.getLineNumbers(args, editor);\n\n\t\tconst levels = args && args.levels;\n\t\tconst direction = args && args.direction;\n\n\t\tif (typeof levels !== 'number' && typeof direction !== 'string') {\n\t\t\t// fold the region at the location or if already collapsed, the first uncollapsed parent instead.\n\t\t\tsetCollapseStateUp(foldingModel, true, lineNumbers);\n\t\t} else {\n\t\t\tif (direction === 'up') {\n\t\t\t\tsetCollapseStateLevelsUp(foldingModel, true, levels || 1, lineNumbers);\n\t\t\t} else {\n\t\t\t\tsetCollapseStateLevelsDown(foldingModel, true, levels || 1, lineNumbers);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\nclass ToggleFoldAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.toggleFold',\n\t\t\tlabel: nls.localize2('toggleFoldAction.label', \"Toggle Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyL),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\ttoggleCollapseState(foldingModel, 1, selectedLines);\n\t}\n}\n\n\nclass FoldRecursivelyAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldRecursively',\n\t\t\tlabel: nls.localize2('foldRecursivelyAction.label', \"Fold Recursively\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.BracketLeft),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tsetCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);\n\t}\n}\n\n\nclass ToggleFoldRecursivelyAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.toggleFoldRecursively',\n\t\t\tlabel: nls.localize2('toggleFoldRecursivelyAction.label', \"Toggle Fold Recursively\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyL),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\ttoggleCollapseState(foldingModel, Number.MAX_VALUE, selectedLines);\n\t}\n}\n\n\nclass FoldAllBlockCommentsAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAllBlockComments',\n\t\t\tlabel: nls.localize2('foldAllBlockComments.label', \"Fold All Block Comments\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Slash),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: void, languageConfigurationService: ILanguageConfigurationService): void {\n\t\tif (foldingModel.regions.hasTypes()) {\n\t\t\tsetCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);\n\t\t} else {\n\t\t\tconst editorModel = editor.getModel();\n\t\t\tif (!editorModel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst comments = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).comments;\n\t\t\tif (comments && comments.blockCommentStartToken) {\n\t\t\t\tconst regExp = new RegExp('^\\\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));\n\t\t\t\tsetCollapseStateForMatchingLines(foldingModel, regExp, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass FoldAllRegionsAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAllMarkerRegions',\n\t\t\tlabel: nls.localize2('foldAllMarkerRegions.label', \"Fold All Regions\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Digit8),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: void, languageConfigurationService: ILanguageConfigurationService): void {\n\t\tif (foldingModel.regions.hasTypes()) {\n\t\t\tsetCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);\n\t\t} else {\n\t\t\tconst editorModel = editor.getModel();\n\t\t\tif (!editorModel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n\t\t\tif (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n\t\t\t\tconst regExp = new RegExp(foldingRules.markers.start);\n\t\t\t\tsetCollapseStateForMatchingLines(foldingModel, regExp, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass UnfoldAllRegionsAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldAllMarkerRegions',\n\t\t\tlabel: nls.localize2('unfoldAllMarkerRegions.label', \"Unfold All Regions\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Digit9),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: void, languageConfigurationService: ILanguageConfigurationService): void {\n\t\tif (foldingModel.regions.hasTypes()) {\n\t\t\tsetCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);\n\t\t} else {\n\t\t\tconst editorModel = editor.getModel();\n\t\t\tif (!editorModel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n\t\t\tif (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n\t\t\t\tconst regExp = new RegExp(foldingRules.markers.start);\n\t\t\t\tsetCollapseStateForMatchingLines(foldingModel, regExp, false);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass FoldAllExceptAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAllExcept',\n\t\t\tlabel: nls.localize2('foldAllExcept.label', \"Fold All Except Selected\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Minus),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tsetCollapseStateForRest(foldingModel, true, selectedLines);\n\t}\n\n}\n\nclass UnfoldAllExceptAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldAllExcept',\n\t\t\tlabel: nls.localize2('unfoldAllExcept.label', \"Unfold All Except Selected\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Equal),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tsetCollapseStateForRest(foldingModel, false, selectedLines);\n\t}\n}\n\nclass FoldAllAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAll',\n\t\t\tlabel: nls.localize2('foldAllAction.label', \"Fold All\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Digit0),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, _editor: ICodeEditor): void {\n\t\tsetCollapseStateLevelsDown(foldingModel, true);\n\t}\n}\n\nclass UnfoldAllAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldAll',\n\t\t\tlabel: nls.localize2('unfoldAllAction.label', \"Unfold All\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyJ),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, _editor: ICodeEditor): void {\n\t\tsetCollapseStateLevelsDown(foldingModel, false);\n\t}\n}\n\nclass FoldLevelAction extends FoldingAction<void> {\n\tprivate static readonly ID_PREFIX = 'editor.foldLevel';\n\tpublic static readonly ID = (level: number) => FoldLevelAction.ID_PREFIX + level;\n\n\tprivate getFoldingLevel() {\n\t\treturn parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tsetCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));\n\t}\n}\n\n/** Action to go to the parent fold of current line */\nclass GotoParentFoldAction extends FoldingAction<void> {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.gotoParentFold',\n\t\t\tlabel: nls.localize2('gotoParentFold.label', \"Go to Parent Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tif (selectedLines.length > 0) {\n\t\t\tconst startLineNumber = getParentFoldLine(selectedLines[0], foldingModel);\n\t\t\tif (startLineNumber !== null) {\n\t\t\t\teditor.setSelection({\n\t\t\t\t\tstartLineNumber: startLineNumber,\n\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\tendLineNumber: startLineNumber,\n\t\t\t\t\tendColumn: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Action to go to the previous fold of current line */\nclass GotoPreviousFoldAction extends FoldingAction<void> {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.gotoPreviousFold',\n\t\t\tlabel: nls.localize2('gotoPreviousFold.label', \"Go to Previous Folding Range\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tif (selectedLines.length > 0) {\n\t\t\tconst startLineNumber = getPreviousFoldLine(selectedLines[0], foldingModel);\n\t\t\tif (startLineNumber !== null) {\n\t\t\t\teditor.setSelection({\n\t\t\t\t\tstartLineNumber: startLineNumber,\n\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\tendLineNumber: startLineNumber,\n\t\t\t\t\tendColumn: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Action to go to the next fold of current line */\nclass GotoNextFoldAction extends FoldingAction<void> {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.gotoNextFold',\n\t\t\tlabel: nls.localize2('gotoNextFold.label', \"Go to Next Folding Range\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tif (selectedLines.length > 0) {\n\t\t\tconst startLineNumber = getNextFoldLine(selectedLines[0], foldingModel);\n\t\t\tif (startLineNumber !== null) {\n\t\t\t\teditor.setSelection({\n\t\t\t\t\tstartLineNumber: startLineNumber,\n\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\tendLineNumber: startLineNumber,\n\t\t\t\t\tendColumn: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass FoldRangeFromSelectionAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.createFoldingRangeFromSelection',\n\t\t\tlabel: nls.localize2('createManualFoldRange.label', \"Create Folding Range from Selection\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Comma),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst collapseRanges: FoldRange[] = [];\n\t\tconst selections = editor.getSelections();\n\t\tif (selections) {\n\t\t\tfor (const selection of selections) {\n\t\t\t\tlet endLineNumber = selection.endLineNumber;\n\t\t\t\tif (selection.endColumn === 1) {\n\t\t\t\t\t--endLineNumber;\n\t\t\t\t}\n\t\t\t\tif (endLineNumber > selection.startLineNumber) {\n\t\t\t\t\tcollapseRanges.push({\n\t\t\t\t\t\tstartLineNumber: selection.startLineNumber,\n\t\t\t\t\t\tendLineNumber: endLineNumber,\n\t\t\t\t\t\ttype: undefined,\n\t\t\t\t\t\tisCollapsed: true,\n\t\t\t\t\t\tsource: FoldSource.userDefined\n\t\t\t\t\t});\n\t\t\t\t\teditor.setSelection({\n\t\t\t\t\t\tstartLineNumber: selection.startLineNumber,\n\t\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\t\tendLineNumber: selection.startLineNumber,\n\t\t\t\t\t\tendColumn: 1\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (collapseRanges.length > 0) {\n\t\t\t\tcollapseRanges.sort((a, b) => {\n\t\t\t\t\treturn a.startLineNumber - b.startLineNumber;\n\t\t\t\t});\n\t\t\t\tconst newRanges = FoldingRegions.sanitizeAndMerge(foldingModel.regions, collapseRanges, editor.getModel()?.getLineCount());\n\t\t\t\tfoldingModel.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass RemoveFoldRangeFromSelectionAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.removeManualFoldingRanges',\n\t\t\tlabel: nls.localize2('removeManualFoldingRanges.label', \"Remove Manual Folding Ranges\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Period),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections) {\n\t\t\tconst ranges: ILineRange[] = [];\n\t\t\tfor (const selection of selections) {\n\t\t\t\tconst { startLineNumber, endLineNumber } = selection;\n\t\t\t\tranges.push(endLineNumber >= startLineNumber ? { startLineNumber, endLineNumber } : { endLineNumber, startLineNumber });\n\t\t\t}\n\t\t\tfoldingModel.removeManualRanges(ranges);\n\t\t\tfoldingController.triggerFoldingModelChanged();\n\t\t}\n\t}\n}\n\n\nclass ToggleImportFoldAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.toggleImportFold',\n\t\t\tlabel: nls.localize2('toggleImportFold.label', \"Toggle Import Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tasync invoke(foldingController: FoldingController, foldingModel: FoldingModel): Promise<void> {\n\t\tconst regionsToToggle: FoldingRegion[] = [];\n\t\tconst regions = foldingModel.regions;\n\t\tfor (let i = regions.length - 1; i >= 0; i--) {\n\t\t\tif (regions.getType(i) === FoldingRangeKind.Imports.value) {\n\t\t\t\tregionsToToggle.push(regions.toRegion(i));\n\t\t\t}\n\t\t}\n\t\tfoldingModel.toggleCollapseState(regionsToToggle);\n\t\tfoldingController.triggerFoldingModelChanged();\n\t}\n}\n\n\nregisterEditorContribution(FoldingController.ID, FoldingController, EditorContributionInstantiation.Eager); // eager because it uses `saveViewState`/`restoreViewState`\nregisterEditorAction(UnfoldAction);\nregisterEditorAction(UnFoldRecursivelyAction);\nregisterEditorAction(FoldAction);\nregisterEditorAction(FoldRecursivelyAction);\nregisterEditorAction(ToggleFoldRecursivelyAction);\nregisterEditorAction(FoldAllAction);\nregisterEditorAction(UnfoldAllAction);\nregisterEditorAction(FoldAllBlockCommentsAction);\nregisterEditorAction(FoldAllRegionsAction);\nregisterEditorAction(UnfoldAllRegionsAction);\nregisterEditorAction(FoldAllExceptAction);\nregisterEditorAction(UnfoldAllExceptAction);\nregisterEditorAction(ToggleFoldAction);\nregisterEditorAction(GotoParentFoldAction);\nregisterEditorAction(GotoPreviousFoldAction);\nregisterEditorAction(GotoNextFoldAction);\nregisterEditorAction(FoldRangeFromSelectionAction);\nregisterEditorAction(RemoveFoldRangeFromSelectionAction);\nregisterEditorAction(ToggleImportFoldAction);\n\nfor (let i = 1; i <= 7; i++) {\n\tregisterInstantiatedEditorAction(\n\t\tnew FoldLevelAction({\n\t\t\tid: FoldLevelAction.ID(i),\n\t\t\tlabel: nls.localize2('foldLevelAction.label', \"Fold Level {0}\", i),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | (KeyCode.Digit0 + i)),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t})\n\t);\n}\n\nCommandsRegistry.registerCommand('_executeFoldingRangeProvider', async function (accessor, ...args) {\n\tconst [resource] = args;\n\tif (!(resource instanceof URI)) {\n\t\tthrow illegalArgument();\n\t}\n\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\n\tconst model = accessor.get(IModelService).getModel(resource);\n\tif (!model) {\n\t\tthrow illegalArgument();\n\t}\n\n\tconst configurationService = accessor.get(IConfigurationService);\n\tif (!configurationService.getValue('editor.folding', { resource })) {\n\t\treturn [];\n\t}\n\n\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\tconst strategy = configurationService.getValue('editor.foldingStrategy', { resource });\n\tconst foldingLimitReporter = {\n\t\tget limit() {\n\t\t\treturn configurationService.getValue<number>('editor.foldingMaximumRegions', { resource });\n\t\t},\n\t\tupdate: (computed: number, limited: number | false) => { }\n\t};\n\n\tconst indentRangeProvider = new IndentRangeProvider(model, languageConfigurationService, foldingLimitReporter);\n\tlet rangeProvider: RangeProvider = indentRangeProvider;\n\tif (strategy !== 'indentation') {\n\t\tconst providers = FoldingController.getFoldingRangeProviders(languageFeaturesService, model);\n\t\tif (providers.length) {\n\t\t\trangeProvider = new SyntaxRangeProvider(model, providers, () => { }, foldingLimitReporter, indentRangeProvider);\n\t\t}\n\t}\n\tconst ranges = await rangeProvider.compute(CancellationToken.None);\n\tconst result: FoldingRange[] = [];\n\ttry {\n\t\tif (ranges) {\n\t\t\tfor (let i = 0; i < ranges.length; i++) {\n\t\t\t\tconst type = ranges.getType(i);\n\t\t\t\tresult.push({ start: ranges.getStartLineNumber(i), end: ranges.getEndLineNumber(i), kind: type ? FoldingRangeKind.fromValue(type) : undefined });\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t} finally {\n\t\trangeProvider.dispose();\n\t}\n});\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/folding/browser/folding.ts"],"names":[],"mappings":"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","file":"folding.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 { CancelablePromise, createCancelablePromise, Delayer, RunOnceScheduler } from '../../../../base/common/async.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { illegalArgument, onUnexpectedError } from '../../../../base/common/errors.js';\nimport { KeyChord, KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { Disposable, DisposableStore } from '../../../../base/common/lifecycle.js';\nimport { escapeRegExpCharacters } from '../../../../base/common/strings.js';\nimport * as types from '../../../../base/common/types.js';\nimport './folding.css';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { ICodeEditor, IEditorMouseEvent, MouseTargetType } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorContributionInstantiation, registerEditorAction, registerEditorContribution, registerInstantiatedEditorAction, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { ConfigurationChangedEvent, EditorOption } from '../../../common/config/editorOptions.js';\nimport { IPosition } from '../../../common/core/position.js';\nimport { IRange } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { IModelContentChangedEvent } from '../../../common/textModelEvents.js';\nimport { FoldingRange, FoldingRangeKind, FoldingRangeProvider } from '../../../common/languages.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { CollapseMemento, FoldingModel, getNextFoldLine, getParentFoldLine as getParentFoldLine, getPreviousFoldLine, setCollapseStateAtLevel, setCollapseStateForMatchingLines, setCollapseStateForRest, setCollapseStateForType, setCollapseStateLevelsDown, setCollapseStateLevelsUp, setCollapseStateUp, toggleCollapseState } from './foldingModel.js';\nimport { HiddenRangeModel } from './hiddenRangeModel.js';\nimport { IndentRangeProvider } from './indentRangeProvider.js';\nimport * as nls from '../../../../nls.js';\nimport { IContextKey, IContextKeyService, RawContextKey } from '../../../../platform/contextkey/common/contextkey.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { FoldingDecorationProvider } from './foldingDecorations.js';\nimport { FoldingRegion, FoldingRegions, FoldRange, FoldSource, ILineRange } from './foldingRanges.js';\nimport { SyntaxRangeProvider } from './syntaxRangeProvider.js';\nimport { INotificationService } from '../../../../platform/notification/common/notification.js';\nimport { IFeatureDebounceInformation, ILanguageFeatureDebounceService } from '../../../common/services/languageFeatureDebounce.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { ILanguageFeaturesService } from '../../../common/services/languageFeatures.js';\nimport { Emitter } from '../../../../base/common/event.js';\nimport { CommandsRegistry } from '../../../../platform/commands/common/commands.js';\nimport { URI } from '../../../../base/common/uri.js';\nimport { IModelService } from '../../../common/services/model.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nconst CONTEXT_FOLDING_ENABLED = new RawContextKey<boolean>('foldingEnabled', false);\n\nexport interface RangeProvider {\n\treadonly id: string;\n\tcompute(cancelationToken: CancellationToken): Promise<FoldingRegions | null>;\n\tdispose(): void;\n}\n\ninterface FoldingStateMemento {\n\tcollapsedRegions?: CollapseMemento;\n\tlineCount?: number;\n\tprovider?: string;\n\tfoldedImports?: boolean;\n}\n\nexport interface FoldingLimitReporter {\n\treadonly limit: number;\n\tupdate(computed: number, limited: number | false): void;\n}\n\nexport type FoldingRangeProviderSelector = (provider: FoldingRangeProvider[], document: ITextModel) => FoldingRangeProvider[] | undefined;\n\nexport class FoldingController extends Disposable implements IEditorContribution {\n\n\tpublic static readonly ID = 'editor.contrib.folding';\n\n\tpublic static get(editor: ICodeEditor): FoldingController | null {\n\t\treturn editor.getContribution<FoldingController>(FoldingController.ID);\n\t}\n\n\tprivate static _foldingRangeSelector: FoldingRangeProviderSelector | undefined;\n\n\tpublic static getFoldingRangeProviders(languageFeaturesService: ILanguageFeaturesService, model: ITextModel): FoldingRangeProvider[] {\n\t\tconst foldingRangeProviders = languageFeaturesService.foldingRangeProvider.ordered(model);\n\t\treturn (FoldingController._foldingRangeSelector?.(foldingRangeProviders, model)) ?? foldingRangeProviders;\n\t}\n\n\tprivate readonly editor: ICodeEditor;\n\tprivate _isEnabled: boolean;\n\tprivate _useFoldingProviders: boolean;\n\tprivate _unfoldOnClickAfterEndOfLine: boolean;\n\tprivate _restoringViewState: boolean;\n\tprivate _foldingImportsByDefault: boolean;\n\tprivate _currentModelHasFoldedImports: boolean;\n\n\tprivate readonly foldingDecorationProvider: FoldingDecorationProvider;\n\n\tprivate foldingModel: FoldingModel | null;\n\tprivate hiddenRangeModel: HiddenRangeModel | null;\n\n\tprivate rangeProvider: RangeProvider | null;\n\tprivate foldingRegionPromise: CancelablePromise<FoldingRegions | null> | null;\n\n\tprivate foldingModelPromise: Promise<FoldingModel | null> | null;\n\tprivate updateScheduler: Delayer<FoldingModel | null> | null;\n\tprivate readonly updateDebounceInfo: IFeatureDebounceInformation;\n\n\tprivate foldingEnabled: IContextKey<boolean>;\n\tprivate cursorChangedScheduler: RunOnceScheduler | null;\n\n\tprivate readonly localToDispose = this._register(new DisposableStore());\n\tprivate mouseDownInfo: { lineNumber: number; iconClicked: boolean } | null;\n\n\tpublic readonly _foldingLimitReporter: RangesLimitReporter;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IContextKeyService private readonly contextKeyService: IContextKeyService,\n\t\t@ILanguageConfigurationService private readonly languageConfigurationService: ILanguageConfigurationService,\n\t\t@INotificationService notificationService: INotificationService,\n\t\t@ILanguageFeatureDebounceService languageFeatureDebounceService: ILanguageFeatureDebounceService,\n\t\t@ILanguageFeaturesService private readonly languageFeaturesService: ILanguageFeaturesService,\n\t) {\n\t\tsuper();\n\t\tthis.editor = editor;\n\n\t\tthis._foldingLimitReporter = this._register(new RangesLimitReporter(editor));\n\n\t\tconst options = this.editor.getOptions();\n\t\tthis._isEnabled = options.get(EditorOption.folding);\n\t\tthis._useFoldingProviders = options.get(EditorOption.foldingStrategy) !== 'indentation';\n\t\tthis._unfoldOnClickAfterEndOfLine = options.get(EditorOption.unfoldOnClickAfterEndOfLine);\n\t\tthis._restoringViewState = false;\n\t\tthis._currentModelHasFoldedImports = false;\n\t\tthis._foldingImportsByDefault = options.get(EditorOption.foldingImportsByDefault);\n\t\tthis.updateDebounceInfo = languageFeatureDebounceService.for(languageFeaturesService.foldingRangeProvider, 'Folding', { min: 200 });\n\n\t\tthis.foldingModel = null;\n\t\tthis.hiddenRangeModel = null;\n\t\tthis.rangeProvider = null;\n\t\tthis.foldingRegionPromise = null;\n\t\tthis.foldingModelPromise = null;\n\t\tthis.updateScheduler = null;\n\t\tthis.cursorChangedScheduler = null;\n\t\tthis.mouseDownInfo = null;\n\n\t\tthis.foldingDecorationProvider = new FoldingDecorationProvider(editor);\n\t\tthis.foldingDecorationProvider.showFoldingControls = options.get(EditorOption.showFoldingControls);\n\t\tthis.foldingDecorationProvider.showFoldingHighlights = options.get(EditorOption.foldingHighlight);\n\t\tthis.foldingEnabled = CONTEXT_FOLDING_ENABLED.bindTo(this.contextKeyService);\n\t\tthis.foldingEnabled.set(this._isEnabled);\n\n\t\tthis._register(this.editor.onDidChangeModel(() => this.onModelChanged()));\n\n\t\tthis._register(this.editor.onDidChangeConfiguration((e: ConfigurationChangedEvent) => {\n\t\t\tif (e.hasChanged(EditorOption.folding)) {\n\t\t\t\tthis._isEnabled = this.editor.getOptions().get(EditorOption.folding);\n\t\t\t\tthis.foldingEnabled.set(this._isEnabled);\n\t\t\t\tthis.onModelChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.foldingMaximumRegions)) {\n\t\t\t\tthis.onModelChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.showFoldingControls) || e.hasChanged(EditorOption.foldingHighlight)) {\n\t\t\t\tconst options = this.editor.getOptions();\n\t\t\t\tthis.foldingDecorationProvider.showFoldingControls = options.get(EditorOption.showFoldingControls);\n\t\t\t\tthis.foldingDecorationProvider.showFoldingHighlights = options.get(EditorOption.foldingHighlight);\n\t\t\t\tthis.triggerFoldingModelChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.foldingStrategy)) {\n\t\t\t\tthis._useFoldingProviders = this.editor.getOptions().get(EditorOption.foldingStrategy) !== 'indentation';\n\t\t\t\tthis.onFoldingStrategyChanged();\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.unfoldOnClickAfterEndOfLine)) {\n\t\t\t\tthis._unfoldOnClickAfterEndOfLine = this.editor.getOptions().get(EditorOption.unfoldOnClickAfterEndOfLine);\n\t\t\t}\n\t\t\tif (e.hasChanged(EditorOption.foldingImportsByDefault)) {\n\t\t\t\tthis._foldingImportsByDefault = this.editor.getOptions().get(EditorOption.foldingImportsByDefault);\n\t\t\t}\n\t\t}));\n\t\tthis.onModelChanged();\n\t}\n\n\t/**\n\t * Store view state.\n\t */\n\tpublic saveViewState(): FoldingStateMemento | undefined {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this._isEnabled || model.isTooLargeForTokenization()) {\n\t\t\treturn {};\n\t\t}\n\t\tif (this.foldingModel) { // disposed ?\n\t\t\tconst collapsedRegions = this.foldingModel.getMemento();\n\t\t\tconst provider = this.rangeProvider ? this.rangeProvider.id : undefined;\n\t\t\treturn { collapsedRegions, lineCount: model.getLineCount(), provider, foldedImports: this._currentModelHasFoldedImports };\n\t\t}\n\t\treturn undefined;\n\t}\n\n\t/**\n\t * Restore view state.\n\t */\n\tpublic restoreViewState(state: FoldingStateMemento): void {\n\t\tconst model = this.editor.getModel();\n\t\tif (!model || !this._isEnabled || model.isTooLargeForTokenization() || !this.hiddenRangeModel) {\n\t\t\treturn;\n\t\t}\n\t\tif (!state) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._currentModelHasFoldedImports = !!state.foldedImports;\n\t\tif (state.collapsedRegions && state.collapsedRegions.length > 0 && this.foldingModel) {\n\t\t\tthis._restoringViewState = true;\n\t\t\ttry {\n\t\t\t\tthis.foldingModel.applyMemento(state.collapsedRegions);\n\t\t\t} finally {\n\t\t\t\tthis._restoringViewState = false;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate onModelChanged(): void {\n\t\tthis.localToDispose.clear();\n\n\t\tconst model = this.editor.getModel();\n\t\tif (!this._isEnabled || !model || model.isTooLargeForTokenization()) {\n\t\t\t// huge files get no view model, so they cannot support hidden areas\n\t\t\treturn;\n\t\t}\n\n\t\tthis._currentModelHasFoldedImports = false;\n\t\tthis.foldingModel = new FoldingModel(model, this.foldingDecorationProvider);\n\t\tthis.localToDispose.add(this.foldingModel);\n\n\t\tthis.hiddenRangeModel = new HiddenRangeModel(this.foldingModel);\n\t\tthis.localToDispose.add(this.hiddenRangeModel);\n\t\tthis.localToDispose.add(this.hiddenRangeModel.onDidChange(hr => this.onHiddenRangesChanges(hr)));\n\n\t\tthis.updateScheduler = new Delayer<FoldingModel>(this.updateDebounceInfo.get(model));\n\t\tthis.localToDispose.add(this.updateScheduler);\n\n\t\tthis.cursorChangedScheduler = new RunOnceScheduler(() => this.revealCursor(), 200);\n\t\tthis.localToDispose.add(this.cursorChangedScheduler);\n\t\tthis.localToDispose.add(this.languageFeaturesService.foldingRangeProvider.onDidChange(() => this.onFoldingStrategyChanged()));\n\t\tthis.localToDispose.add(this.editor.onDidChangeModelLanguageConfiguration(() => this.onFoldingStrategyChanged())); // covers model language changes as well\n\t\tthis.localToDispose.add(this.editor.onDidChangeModelContent(e => this.onDidChangeModelContent(e)));\n\t\tthis.localToDispose.add(this.editor.onDidChangeCursorPosition(() => this.onCursorPositionChanged()));\n\t\tthis.localToDispose.add(this.editor.onMouseDown(e => this.onEditorMouseDown(e)));\n\t\tthis.localToDispose.add(this.editor.onMouseUp(e => this.onEditorMouseUp(e)));\n\t\tthis.localToDispose.add({\n\t\t\tdispose: () => {\n\t\t\t\tif (this.foldingRegionPromise) {\n\t\t\t\t\tthis.foldingRegionPromise.cancel();\n\t\t\t\t\tthis.foldingRegionPromise = null;\n\t\t\t\t}\n\t\t\t\tthis.updateScheduler?.cancel();\n\t\t\t\tthis.updateScheduler = null;\n\t\t\t\tthis.foldingModel = null;\n\t\t\t\tthis.foldingModelPromise = null;\n\t\t\t\tthis.hiddenRangeModel = null;\n\t\t\t\tthis.cursorChangedScheduler = null;\n\t\t\t\tthis.rangeProvider?.dispose();\n\t\t\t\tthis.rangeProvider = null;\n\t\t\t}\n\t\t});\n\t\tthis.triggerFoldingModelChanged();\n\t}\n\n\tprivate onFoldingStrategyChanged() {\n\t\tthis.rangeProvider?.dispose();\n\t\tthis.rangeProvider = null;\n\t\tthis.triggerFoldingModelChanged();\n\t}\n\n\tprivate getRangeProvider(editorModel: ITextModel): RangeProvider {\n\t\tif (this.rangeProvider) {\n\t\t\treturn this.rangeProvider;\n\t\t}\n\t\tconst indentRangeProvider = new IndentRangeProvider(editorModel, this.languageConfigurationService, this._foldingLimitReporter);\n\t\tthis.rangeProvider = indentRangeProvider; // fallback\n\t\tif (this._useFoldingProviders && this.foldingModel) {\n\t\t\tconst selectedProviders = FoldingController.getFoldingRangeProviders(this.languageFeaturesService, editorModel);\n\t\t\tif (selectedProviders.length > 0) {\n\t\t\t\tthis.rangeProvider = new SyntaxRangeProvider(editorModel, selectedProviders, () => this.triggerFoldingModelChanged(), this._foldingLimitReporter, indentRangeProvider);\n\t\t\t}\n\t\t}\n\t\treturn this.rangeProvider;\n\t}\n\n\tpublic getFoldingModel(): Promise<FoldingModel | null> | null {\n\t\treturn this.foldingModelPromise;\n\t}\n\n\tprivate onDidChangeModelContent(e: IModelContentChangedEvent) {\n\t\tthis.hiddenRangeModel?.notifyChangeModelContent(e);\n\t\tthis.triggerFoldingModelChanged();\n\t}\n\n\n\tpublic triggerFoldingModelChanged() {\n\t\tif (this.updateScheduler) {\n\t\t\tif (this.foldingRegionPromise) {\n\t\t\t\tthis.foldingRegionPromise.cancel();\n\t\t\t\tthis.foldingRegionPromise = null;\n\t\t\t}\n\t\t\tthis.foldingModelPromise = this.updateScheduler.trigger(() => {\n\t\t\t\tconst foldingModel = this.foldingModel;\n\t\t\t\tif (!foldingModel) { // null if editor has been disposed, or folding turned off\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tconst sw = new StopWatch();\n\t\t\t\tconst provider = this.getRangeProvider(foldingModel.textModel);\n\t\t\t\tconst foldingRegionPromise = this.foldingRegionPromise = createCancelablePromise(token => provider.compute(token));\n\t\t\t\treturn foldingRegionPromise.then(foldingRanges => {\n\t\t\t\t\tif (foldingRanges && foldingRegionPromise === this.foldingRegionPromise) { // new request or cancelled in the meantime?\n\t\t\t\t\t\tlet scrollState: StableEditorScrollState | undefined;\n\n\t\t\t\t\t\tif (this._foldingImportsByDefault && !this._currentModelHasFoldedImports) {\n\t\t\t\t\t\t\tconst hasChanges = foldingRanges.setCollapsedAllOfType(FoldingRangeKind.Imports.value, true);\n\t\t\t\t\t\t\tif (hasChanges) {\n\t\t\t\t\t\t\t\tscrollState = StableEditorScrollState.capture(this.editor);\n\t\t\t\t\t\t\t\tthis._currentModelHasFoldedImports = hasChanges;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// some cursors might have moved into hidden regions, make sure they are in expanded regions\n\t\t\t\t\t\tconst selections = this.editor.getSelections();\n\t\t\t\t\t\tfoldingModel.update(foldingRanges, toSelectedLines(selections));\n\n\t\t\t\t\t\tscrollState?.restore(this.editor);\n\n\t\t\t\t\t\t// update debounce info\n\t\t\t\t\t\tconst newValue = this.updateDebounceInfo.update(foldingModel.textModel, sw.elapsed());\n\t\t\t\t\t\tif (this.updateScheduler) {\n\t\t\t\t\t\t\tthis.updateScheduler.defaultDelay = newValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn foldingModel;\n\t\t\t\t});\n\t\t\t}).then(undefined, (err) => {\n\t\t\t\tonUnexpectedError(err);\n\t\t\t\treturn null;\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate onHiddenRangesChanges(hiddenRanges: IRange[]) {\n\t\tif (this.hiddenRangeModel && hiddenRanges.length && !this._restoringViewState) {\n\t\t\tconst selections = this.editor.getSelections();\n\t\t\tif (selections) {\n\t\t\t\tif (this.hiddenRangeModel.adjustSelections(selections)) {\n\t\t\t\t\tthis.editor.setSelections(selections);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tthis.editor.setHiddenAreas(hiddenRanges, this);\n\t}\n\n\tprivate onCursorPositionChanged() {\n\t\tif (this.hiddenRangeModel && this.hiddenRangeModel.hasRanges()) {\n\t\t\tthis.cursorChangedScheduler!.schedule();\n\t\t}\n\t}\n\n\tprivate revealCursor() {\n\t\tconst foldingModel = this.getFoldingModel();\n\t\tif (!foldingModel) {\n\t\t\treturn;\n\t\t}\n\t\tfoldingModel.then(foldingModel => { // null is returned if folding got disabled in the meantime\n\t\t\tif (foldingModel) {\n\t\t\t\tconst selections = this.editor.getSelections();\n\t\t\t\tif (selections && selections.length > 0) {\n\t\t\t\t\tconst toToggle: FoldingRegion[] = [];\n\t\t\t\t\tfor (const selection of selections) {\n\t\t\t\t\t\tconst lineNumber = selection.selectionStartLineNumber;\n\t\t\t\t\t\tif (this.hiddenRangeModel && this.hiddenRangeModel.isHidden(lineNumber)) {\n\t\t\t\t\t\t\ttoToggle.push(...foldingModel.getAllRegionsAtLine(lineNumber, r => r.isCollapsed && lineNumber > r.startLineNumber));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif (toToggle.length) {\n\t\t\t\t\t\tfoldingModel.toggleCollapseState(toToggle);\n\t\t\t\t\t\tthis.reveal(selections[0].getPosition());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}).then(undefined, onUnexpectedError);\n\n\t}\n\n\tprivate onEditorMouseDown(e: IEditorMouseEvent): void {\n\t\tthis.mouseDownInfo = null;\n\n\n\t\tif (!this.hiddenRangeModel || !e.target || !e.target.range) {\n\t\t\treturn;\n\t\t}\n\t\tif (!e.event.leftButton && !e.event.middleButton) {\n\t\t\treturn;\n\t\t}\n\t\tconst range = e.target.range;\n\t\tlet iconClicked = false;\n\t\tswitch (e.target.type) {\n\t\t\tcase MouseTargetType.GUTTER_LINE_DECORATIONS: {\n\t\t\t\tconst data = e.target.detail;\n\t\t\t\tconst offsetLeftInGutter = e.target.element!.offsetLeft;\n\t\t\t\tconst gutterOffsetX = data.offsetX - offsetLeftInGutter;\n\n\t\t\t\t// const gutterOffsetX = data.offsetX - data.glyphMarginWidth - data.lineNumbersWidth - data.glyphMarginLeft;\n\n\t\t\t\t// TODO@joao TODO@alex TODO@martin this is such that we don't collide with dirty diff\n\t\t\t\tif (gutterOffsetX < 4) { // the whitespace between the border and the real folding icon border is 4px\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\ticonClicked = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase MouseTargetType.CONTENT_EMPTY: {\n\t\t\t\tif (this._unfoldOnClickAfterEndOfLine && this.hiddenRangeModel.hasRanges()) {\n\t\t\t\t\tconst data = e.target.detail;\n\t\t\t\t\tif (!data.isAfterLines) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase MouseTargetType.CONTENT_TEXT: {\n\t\t\t\tif (this.hiddenRangeModel.hasRanges()) {\n\t\t\t\t\tconst model = this.editor.getModel();\n\t\t\t\t\tif (model && range.startColumn === model.getLineMaxColumn(range.startLineNumber)) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\tthis.mouseDownInfo = { lineNumber: range.startLineNumber, iconClicked };\n\t}\n\n\tprivate onEditorMouseUp(e: IEditorMouseEvent): void {\n\t\tconst foldingModel = this.foldingModel;\n\t\tif (!foldingModel || !this.mouseDownInfo || !e.target) {\n\t\t\treturn;\n\t\t}\n\t\tconst lineNumber = this.mouseDownInfo.lineNumber;\n\t\tconst iconClicked = this.mouseDownInfo.iconClicked;\n\n\t\tconst range = e.target.range;\n\t\tif (!range || range.startLineNumber !== lineNumber) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (iconClicked) {\n\t\t\tif (e.target.type !== MouseTargetType.GUTTER_LINE_DECORATIONS) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t} else {\n\t\t\tconst model = this.editor.getModel();\n\t\t\tif (!model || range.startColumn !== model.getLineMaxColumn(lineNumber)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst region = foldingModel.getRegionAtLine(lineNumber);\n\t\tif (region && region.startLineNumber === lineNumber) {\n\t\t\tconst isCollapsed = region.isCollapsed;\n\t\t\tif (iconClicked || isCollapsed) {\n\t\t\t\tconst surrounding = e.event.altKey;\n\t\t\t\tlet toToggle = [];\n\t\t\t\tif (surrounding) {\n\t\t\t\t\tconst filter = (otherRegion: FoldingRegion) => !otherRegion.containedBy(region) && !region.containedBy(otherRegion);\n\t\t\t\t\tconst toMaybeToggle = foldingModel.getRegionsInside(null, filter);\n\t\t\t\t\tfor (const r of toMaybeToggle) {\n\t\t\t\t\t\tif (r.isCollapsed) {\n\t\t\t\t\t\t\ttoToggle.push(r);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// if any surrounding regions are folded, unfold those. Otherwise, fold all surrounding\n\t\t\t\t\tif (toToggle.length === 0) {\n\t\t\t\t\t\ttoToggle = toMaybeToggle;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tconst recursive = e.event.middleButton || e.event.shiftKey;\n\t\t\t\t\tif (recursive) {\n\t\t\t\t\t\tfor (const r of foldingModel.getRegionsInside(region)) {\n\t\t\t\t\t\t\tif (r.isCollapsed === isCollapsed) {\n\t\t\t\t\t\t\t\ttoToggle.push(r);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t// when recursive, first only collapse all children. If all are already folded or there are no children, also fold parent.\n\t\t\t\t\tif (isCollapsed || !recursive || toToggle.length === 0) {\n\t\t\t\t\t\ttoToggle.push(region);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tfoldingModel.toggleCollapseState(toToggle);\n\t\t\t\tthis.reveal({ lineNumber, column: 1 });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic reveal(position: IPosition): void {\n\t\tthis.editor.revealPositionInCenterIfOutsideViewport(position, ScrollType.Smooth);\n\t}\n}\n\nexport class RangesLimitReporter extends Disposable implements FoldingLimitReporter {\n\tconstructor(private readonly editor: ICodeEditor) {\n\t\tsuper();\n\t}\n\n\tpublic get limit() {\n\t\treturn this.editor.getOptions().get(EditorOption.foldingMaximumRegions);\n\t}\n\n\tprivate _onDidChange = this._register(new Emitter<void>());\n\n\tprivate _computed: number = 0;\n\tprivate _limited: number | false = false;\n\tpublic update(computed: number, limited: number | false) {\n\t\tif (computed !== this._computed || limited !== this._limited) {\n\t\t\tthis._computed = computed;\n\t\t\tthis._limited = limited;\n\t\t\tthis._onDidChange.fire();\n\t\t}\n\t}\n}\n\nabstract class FoldingAction<T> extends EditorAction {\n\n\tabstract invoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: T, languageConfigurationService: ILanguageConfigurationService): void;\n\n\tpublic override runEditorCommand(accessor: ServicesAccessor, editor: ICodeEditor, args: T): void | Promise<void> {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\t\tconst foldingController = FoldingController.get(editor);\n\t\tif (!foldingController) {\n\t\t\treturn;\n\t\t}\n\t\tconst foldingModelPromise = foldingController.getFoldingModel();\n\t\tif (foldingModelPromise) {\n\t\t\tthis.reportTelemetry(accessor, editor);\n\t\t\treturn foldingModelPromise.then(foldingModel => {\n\t\t\t\tif (foldingModel) {\n\t\t\t\t\tthis.invoke(foldingController, foldingModel, editor, args, languageConfigurationService);\n\t\t\t\t\tconst selection = editor.getSelection();\n\t\t\t\t\tif (selection) {\n\t\t\t\t\t\tfoldingController.reveal(selection.getStartPosition());\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected getSelectedLines(editor: ICodeEditor) {\n\t\tconst selections = editor.getSelections();\n\t\treturn selections ? selections.map(s => s.startLineNumber) : [];\n\t}\n\n\tprotected getLineNumbers(args: FoldingArguments, editor: ICodeEditor) {\n\t\tif (args && args.selectionLines) {\n\t\t\treturn args.selectionLines.map(l => l + 1); // to 0-bases line numbers\n\t\t}\n\t\treturn this.getSelectedLines(editor);\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, _editor: ICodeEditor): void {\n\t}\n}\n\nexport interface SelectedLines {\n\tstartsInside(startLine: number, endLine: number): boolean;\n}\n\nexport function toSelectedLines(selections: Selection[] | null): SelectedLines {\n\tif (!selections || selections.length === 0) {\n\t\treturn {\n\t\t\tstartsInside: () => false\n\t\t};\n\t}\n\treturn {\n\t\tstartsInside(startLine: number, endLine: number): boolean {\n\t\t\tfor (const s of selections) {\n\t\t\t\tconst line = s.startLineNumber;\n\t\t\t\tif (line >= startLine && line <= endLine) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}\n\t};\n}\n\ninterface FoldingArguments {\n\tlevels?: number;\n\tdirection?: 'up' | 'down';\n\tselectionLines?: number[];\n}\n\nfunction foldingArgumentsConstraint(args: unknown) {\n\tif (!types.isUndefined(args)) {\n\t\tif (!types.isObject(args)) {\n\t\t\treturn false;\n\t\t}\n\t\tconst foldingArgs: FoldingArguments = args;\n\t\tif (!types.isUndefined(foldingArgs.levels) && !types.isNumber(foldingArgs.levels)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!types.isUndefined(foldingArgs.direction) && !types.isString(foldingArgs.direction)) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!types.isUndefined(foldingArgs.selectionLines) && (!Array.isArray(foldingArgs.selectionLines) || !foldingArgs.selectionLines.every(types.isNumber))) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n}\n\nclass UnfoldAction extends FoldingAction<FoldingArguments> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfold',\n\t\t\tlabel: nls.localize2('unfoldAction.label', \"Unfold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.BracketRight,\n\t\t\t\tmac: {\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.BracketRight\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tdescription: 'Unfold the content in the editor',\n\t\t\t\targs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Unfold editor argument',\n\t\t\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t* 'levels': Number of levels to unfold. If not set, defaults to 1.\n\t\t\t\t\t\t* 'direction': If 'up', unfold given number of levels up otherwise unfolds down.\n\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the unfold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tconstraint: foldingArgumentsConstraint,\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t'type': 'object',\n\t\t\t\t\t\t\t'properties': {\n\t\t\t\t\t\t\t\t'levels': {\n\t\t\t\t\t\t\t\t\t'type': 'number',\n\t\t\t\t\t\t\t\t\t'default': 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'direction': {\n\t\t\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t\t\t'enum': ['up', 'down'],\n\t\t\t\t\t\t\t\t\t'default': 'down'\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'selectionLines': {\n\t\t\t\t\t\t\t\t\t'type': 'array',\n\t\t\t\t\t\t\t\t\t'items': {\n\t\t\t\t\t\t\t\t\t\t'type': 'number'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {\n\t\tconst levels = args && args.levels || 1;\n\t\tconst lineNumbers = this.getLineNumbers(args, editor);\n\t\tif (args && args.direction === 'up') {\n\t\t\tsetCollapseStateLevelsUp(foldingModel, false, levels, lineNumbers);\n\t\t} else {\n\t\t\tsetCollapseStateLevelsDown(foldingModel, false, levels, lineNumbers);\n\t\t}\n\t}\n}\n\nclass UnFoldRecursivelyAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldRecursively',\n\t\t\tlabel: nls.localize2('unFoldRecursivelyAction.label', \"Unfold Recursively\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.BracketRight),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, _args: unknown): void {\n\t\tsetCollapseStateLevelsDown(foldingModel, false, Number.MAX_VALUE, this.getSelectedLines(editor));\n\t}\n}\n\nclass FoldAction extends FoldingAction<FoldingArguments> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.fold',\n\t\t\tlabel: nls.localize2('foldAction.label', \"Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.BracketLeft,\n\t\t\t\tmac: {\n\t\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.BracketLeft\n\t\t\t\t},\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmetadata: {\n\t\t\t\tdescription: 'Fold the content in the editor',\n\t\t\t\targs: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Fold editor argument',\n\t\t\t\t\t\tdescription: `Property-value pairs that can be passed through this argument:\n\t\t\t\t\t\t\t* 'levels': Number of levels to fold.\n\t\t\t\t\t\t\t* 'direction': If 'up', folds given number of levels up otherwise folds down.\n\t\t\t\t\t\t\t* 'selectionLines': Array of the start lines (0-based) of the editor selections to apply the fold action to. If not set, the active selection(s) will be used.\n\t\t\t\t\t\t\tIf no levels or direction is set, folds the region at the locations or if already collapsed, the first uncollapsed parent instead.\n\t\t\t\t\t\t`,\n\t\t\t\t\t\tconstraint: foldingArgumentsConstraint,\n\t\t\t\t\t\tschema: {\n\t\t\t\t\t\t\t'type': 'object',\n\t\t\t\t\t\t\t'properties': {\n\t\t\t\t\t\t\t\t'levels': {\n\t\t\t\t\t\t\t\t\t'type': 'number',\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'direction': {\n\t\t\t\t\t\t\t\t\t'type': 'string',\n\t\t\t\t\t\t\t\t\t'enum': ['up', 'down'],\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t'selectionLines': {\n\t\t\t\t\t\t\t\t\t'type': 'array',\n\t\t\t\t\t\t\t\t\t'items': {\n\t\t\t\t\t\t\t\t\t\t'type': 'number'\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: FoldingArguments): void {\n\t\tconst lineNumbers = this.getLineNumbers(args, editor);\n\n\t\tconst levels = args && args.levels;\n\t\tconst direction = args && args.direction;\n\n\t\tif (typeof levels !== 'number' && typeof direction !== 'string') {\n\t\t\t// fold the region at the location or if already collapsed, the first uncollapsed parent instead.\n\t\t\tsetCollapseStateUp(foldingModel, true, lineNumbers);\n\t\t} else {\n\t\t\tif (direction === 'up') {\n\t\t\t\tsetCollapseStateLevelsUp(foldingModel, true, levels || 1, lineNumbers);\n\t\t\t} else {\n\t\t\t\tsetCollapseStateLevelsDown(foldingModel, true, levels || 1, lineNumbers);\n\t\t\t}\n\t\t}\n\t}\n}\n\n\nclass ToggleFoldAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.toggleFold',\n\t\t\tlabel: nls.localize2('toggleFoldAction.label', \"Toggle Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyL),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\ttoggleCollapseState(foldingModel, 1, selectedLines);\n\t}\n}\n\n\nclass FoldRecursivelyAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldRecursively',\n\t\t\tlabel: nls.localize2('foldRecursivelyAction.label', \"Fold Recursively\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.BracketLeft),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tsetCollapseStateLevelsDown(foldingModel, true, Number.MAX_VALUE, selectedLines);\n\t}\n}\n\n\nclass ToggleFoldRecursivelyAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.toggleFoldRecursively',\n\t\t\tlabel: nls.localize2('toggleFoldRecursivelyAction.label', \"Toggle Fold Recursively\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyL),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\ttoggleCollapseState(foldingModel, Number.MAX_VALUE, selectedLines);\n\t}\n}\n\n\nclass FoldAllBlockCommentsAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAllBlockComments',\n\t\t\tlabel: nls.localize2('foldAllBlockComments.label', \"Fold All Block Comments\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Slash),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: void, languageConfigurationService: ILanguageConfigurationService): void {\n\t\tif (foldingModel.regions.hasTypes()) {\n\t\t\tsetCollapseStateForType(foldingModel, FoldingRangeKind.Comment.value, true);\n\t\t} else {\n\t\t\tconst editorModel = editor.getModel();\n\t\t\tif (!editorModel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst comments = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).comments;\n\t\t\tif (comments && comments.blockCommentStartToken) {\n\t\t\t\tconst regExp = new RegExp('^\\\\s*' + escapeRegExpCharacters(comments.blockCommentStartToken));\n\t\t\t\tsetCollapseStateForMatchingLines(foldingModel, regExp, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass FoldAllRegionsAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAllMarkerRegions',\n\t\t\tlabel: nls.localize2('foldAllMarkerRegions.label', \"Fold All Regions\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Digit8),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: void, languageConfigurationService: ILanguageConfigurationService): void {\n\t\tif (foldingModel.regions.hasTypes()) {\n\t\t\tsetCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, true);\n\t\t} else {\n\t\t\tconst editorModel = editor.getModel();\n\t\t\tif (!editorModel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n\t\t\tif (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n\t\t\t\tconst regExp = new RegExp(foldingRules.markers.start);\n\t\t\t\tsetCollapseStateForMatchingLines(foldingModel, regExp, true);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass UnfoldAllRegionsAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldAllMarkerRegions',\n\t\t\tlabel: nls.localize2('unfoldAllMarkerRegions.label', \"Unfold All Regions\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Digit9),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor, args: void, languageConfigurationService: ILanguageConfigurationService): void {\n\t\tif (foldingModel.regions.hasTypes()) {\n\t\t\tsetCollapseStateForType(foldingModel, FoldingRangeKind.Region.value, false);\n\t\t} else {\n\t\t\tconst editorModel = editor.getModel();\n\t\t\tif (!editorModel) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst foldingRules = languageConfigurationService.getLanguageConfiguration(editorModel.getLanguageId()).foldingRules;\n\t\t\tif (foldingRules && foldingRules.markers && foldingRules.markers.start) {\n\t\t\t\tconst regExp = new RegExp(foldingRules.markers.start);\n\t\t\t\tsetCollapseStateForMatchingLines(foldingModel, regExp, false);\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass FoldAllExceptAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAllExcept',\n\t\t\tlabel: nls.localize2('foldAllExcept.label', \"Fold All Except Selected\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Minus),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tsetCollapseStateForRest(foldingModel, true, selectedLines);\n\t}\n\n}\n\nclass UnfoldAllExceptAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldAllExcept',\n\t\t\tlabel: nls.localize2('unfoldAllExcept.label', \"Unfold All Except Selected\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Equal),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tsetCollapseStateForRest(foldingModel, false, selectedLines);\n\t}\n}\n\nclass FoldAllAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.foldAll',\n\t\t\tlabel: nls.localize2('foldAllAction.label', \"Fold All\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Digit0),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, _editor: ICodeEditor): void {\n\t\tsetCollapseStateLevelsDown(foldingModel, true);\n\t}\n}\n\nclass UnfoldAllAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.unfoldAll',\n\t\t\tlabel: nls.localize2('unfoldAllAction.label', \"Unfold All\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyJ),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, _editor: ICodeEditor): void {\n\t\tsetCollapseStateLevelsDown(foldingModel, false);\n\t}\n}\n\nclass FoldLevelAction extends FoldingAction<void> {\n\tprivate static readonly ID_PREFIX = 'editor.foldLevel';\n\tpublic static readonly ID = (level: number) => FoldLevelAction.ID_PREFIX + level;\n\n\tprivate getFoldingLevel() {\n\t\treturn parseInt(this.id.substr(FoldLevelAction.ID_PREFIX.length));\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tsetCollapseStateAtLevel(foldingModel, this.getFoldingLevel(), true, this.getSelectedLines(editor));\n\t}\n}\n\n/** Action to go to the parent fold of current line */\nclass GotoParentFoldAction extends FoldingAction<void> {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.gotoParentFold',\n\t\t\tlabel: nls.localize2('gotoParentFold.label', \"Go to Parent Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tif (selectedLines.length > 0) {\n\t\t\tconst startLineNumber = getParentFoldLine(selectedLines[0], foldingModel);\n\t\t\tif (startLineNumber !== null) {\n\t\t\t\teditor.setSelection({\n\t\t\t\t\tstartLineNumber: startLineNumber,\n\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\tendLineNumber: startLineNumber,\n\t\t\t\t\tendColumn: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Action to go to the previous fold of current line */\nclass GotoPreviousFoldAction extends FoldingAction<void> {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.gotoPreviousFold',\n\t\t\tlabel: nls.localize2('gotoPreviousFold.label', \"Go to Previous Folding Range\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tif (selectedLines.length > 0) {\n\t\t\tconst startLineNumber = getPreviousFoldLine(selectedLines[0], foldingModel);\n\t\t\tif (startLineNumber !== null) {\n\t\t\t\teditor.setSelection({\n\t\t\t\t\tstartLineNumber: startLineNumber,\n\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\tendLineNumber: startLineNumber,\n\t\t\t\t\tendColumn: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n/** Action to go to the next fold of current line */\nclass GotoNextFoldAction extends FoldingAction<void> {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.gotoNextFold',\n\t\t\tlabel: nls.localize2('gotoNextFold.label', \"Go to Next Folding Range\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selectedLines = this.getSelectedLines(editor);\n\t\tif (selectedLines.length > 0) {\n\t\t\tconst startLineNumber = getNextFoldLine(selectedLines[0], foldingModel);\n\t\t\tif (startLineNumber !== null) {\n\t\t\t\teditor.setSelection({\n\t\t\t\t\tstartLineNumber: startLineNumber,\n\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\tendLineNumber: startLineNumber,\n\t\t\t\t\tendColumn: 1\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass FoldRangeFromSelectionAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.createFoldingRangeFromSelection',\n\t\t\tlabel: nls.localize2('createManualFoldRange.label', \"Create Folding Range from Selection\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Comma),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(_foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst collapseRanges: FoldRange[] = [];\n\t\tconst selections = editor.getSelections();\n\t\tif (selections) {\n\t\t\tfor (const selection of selections) {\n\t\t\t\tlet endLineNumber = selection.endLineNumber;\n\t\t\t\tif (selection.endColumn === 1) {\n\t\t\t\t\t--endLineNumber;\n\t\t\t\t}\n\t\t\t\tif (endLineNumber > selection.startLineNumber) {\n\t\t\t\t\tcollapseRanges.push({\n\t\t\t\t\t\tstartLineNumber: selection.startLineNumber,\n\t\t\t\t\t\tendLineNumber: endLineNumber,\n\t\t\t\t\t\ttype: undefined,\n\t\t\t\t\t\tisCollapsed: true,\n\t\t\t\t\t\tsource: FoldSource.userDefined\n\t\t\t\t\t});\n\t\t\t\t\teditor.setSelection({\n\t\t\t\t\t\tstartLineNumber: selection.startLineNumber,\n\t\t\t\t\t\tstartColumn: 1,\n\t\t\t\t\t\tendLineNumber: selection.startLineNumber,\n\t\t\t\t\t\tendColumn: 1\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (collapseRanges.length > 0) {\n\t\t\t\tcollapseRanges.sort((a, b) => {\n\t\t\t\t\treturn a.startLineNumber - b.startLineNumber;\n\t\t\t\t});\n\t\t\t\tconst newRanges = FoldingRegions.sanitizeAndMerge(foldingModel.regions, collapseRanges, editor.getModel()?.getLineCount());\n\t\t\t\tfoldingModel.updatePost(FoldingRegions.fromFoldRanges(newRanges));\n\t\t\t}\n\t\t}\n\t}\n}\n\nclass RemoveFoldRangeFromSelectionAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.removeManualFoldingRanges',\n\t\t\tlabel: nls.localize2('removeManualFoldingRanges.label', \"Remove Manual Folding Ranges\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.Period),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tinvoke(foldingController: FoldingController, foldingModel: FoldingModel, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections) {\n\t\t\tconst ranges: ILineRange[] = [];\n\t\t\tfor (const selection of selections) {\n\t\t\t\tconst { startLineNumber, endLineNumber } = selection;\n\t\t\t\tranges.push(endLineNumber >= startLineNumber ? { startLineNumber, endLineNumber } : { endLineNumber, startLineNumber });\n\t\t\t}\n\t\t\tfoldingModel.removeManualRanges(ranges);\n\t\t\tfoldingController.triggerFoldingModelChanged();\n\t\t}\n\t}\n}\n\n\nclass ToggleImportFoldAction extends FoldingAction<void> {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.toggleImportFold',\n\t\t\tlabel: nls.localize2('toggleImportFold.label', \"Toggle Import Fold\"),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tasync invoke(foldingController: FoldingController, foldingModel: FoldingModel): Promise<void> {\n\t\tconst regionsToToggle: FoldingRegion[] = [];\n\t\tconst regions = foldingModel.regions;\n\t\tfor (let i = regions.length - 1; i >= 0; i--) {\n\t\t\tif (regions.getType(i) === FoldingRangeKind.Imports.value) {\n\t\t\t\tregionsToToggle.push(regions.toRegion(i));\n\t\t\t}\n\t\t}\n\t\tfoldingModel.toggleCollapseState(regionsToToggle);\n\t\tfoldingController.triggerFoldingModelChanged();\n\t}\n}\n\n\nregisterEditorContribution(FoldingController.ID, FoldingController, EditorContributionInstantiation.Eager); // eager because it uses `saveViewState`/`restoreViewState`\nregisterEditorAction(UnfoldAction);\nregisterEditorAction(UnFoldRecursivelyAction);\nregisterEditorAction(FoldAction);\nregisterEditorAction(FoldRecursivelyAction);\nregisterEditorAction(ToggleFoldRecursivelyAction);\nregisterEditorAction(FoldAllAction);\nregisterEditorAction(UnfoldAllAction);\nregisterEditorAction(FoldAllBlockCommentsAction);\nregisterEditorAction(FoldAllRegionsAction);\nregisterEditorAction(UnfoldAllRegionsAction);\nregisterEditorAction(FoldAllExceptAction);\nregisterEditorAction(UnfoldAllExceptAction);\nregisterEditorAction(ToggleFoldAction);\nregisterEditorAction(GotoParentFoldAction);\nregisterEditorAction(GotoPreviousFoldAction);\nregisterEditorAction(GotoNextFoldAction);\nregisterEditorAction(FoldRangeFromSelectionAction);\nregisterEditorAction(RemoveFoldRangeFromSelectionAction);\nregisterEditorAction(ToggleImportFoldAction);\n\nfor (let i = 1; i <= 7; i++) {\n\tregisterInstantiatedEditorAction(\n\t\tnew FoldLevelAction({\n\t\t\tid: FoldLevelAction.ID(i),\n\t\t\tlabel: nls.localize2('foldLevelAction.label', \"Fold Level {0}\", i),\n\t\t\tprecondition: CONTEXT_FOLDING_ENABLED,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | (KeyCode.Digit0 + i)),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t})\n\t);\n}\n\nCommandsRegistry.registerCommand('_executeFoldingRangeProvider', async function (accessor, ...args) {\n\tconst [resource] = args;\n\tif (!(resource instanceof URI)) {\n\t\tthrow illegalArgument();\n\t}\n\n\tconst languageFeaturesService = accessor.get(ILanguageFeaturesService);\n\n\tconst model = accessor.get(IModelService).getModel(resource);\n\tif (!model) {\n\t\tthrow illegalArgument();\n\t}\n\n\tconst configurationService = accessor.get(IConfigurationService);\n\tif (!configurationService.getValue('editor.folding', { resource })) {\n\t\treturn [];\n\t}\n\n\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\tconst strategy = configurationService.getValue('editor.foldingStrategy', { resource });\n\tconst foldingLimitReporter = {\n\t\tget limit() {\n\t\t\treturn configurationService.getValue<number>('editor.foldingMaximumRegions', { resource });\n\t\t},\n\t\tupdate: (computed: number, limited: number | false) => { }\n\t};\n\n\tconst indentRangeProvider = new IndentRangeProvider(model, languageConfigurationService, foldingLimitReporter);\n\tlet rangeProvider: RangeProvider = indentRangeProvider;\n\tif (strategy !== 'indentation') {\n\t\tconst providers = FoldingController.getFoldingRangeProviders(languageFeaturesService, model);\n\t\tif (providers.length) {\n\t\t\trangeProvider = new SyntaxRangeProvider(model, providers, () => { }, foldingLimitReporter, indentRangeProvider);\n\t\t}\n\t}\n\tconst ranges = await rangeProvider.compute(CancellationToken.None);\n\tconst result: FoldingRange[] = [];\n\ttry {\n\t\tif (ranges) {\n\t\t\tfor (let i = 0; i < ranges.length; i++) {\n\t\t\t\tconst type = ranges.getType(i);\n\t\t\t\tresult.push({ start: ranges.getStartLineNumber(i), end: ranges.getEndLineNumber(i), kind: type ? FoldingRangeKind.fromValue(type) : undefined });\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t} finally {\n\t\trangeProvider.dispose();\n\t}\n});\n"]}
@@ -9,16 +9,16 @@ import { editorSelectionBackground, iconForeground, registerColor, transparent }
9
9
  import { registerIcon } from '../../../../platform/theme/common/iconRegistry.js';
10
10
  import { themeColorFromId } from '../../../../platform/theme/common/themeService.js';
11
11
  import { ThemeIcon } from '../../../../base/common/themables.js';
12
- const foldBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hcDark: null, hcLight: null }, localize(1009, "Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."), true);
13
- registerColor('editor.foldPlaceholderForeground', { light: '#808080', dark: '#808080', hcDark: null, hcLight: null }, localize(1010, "Color of the collapsed text after the first line of a folded range."));
14
- registerColor('editorGutter.foldingControlForeground', iconForeground, localize(1011, 'Color of the folding control in the editor gutter.'));
15
- export const foldingExpandedIcon = registerIcon('folding-expanded', Codicon.chevronDown, localize(1012, 'Icon for expanded ranges in the editor glyph margin.'));
16
- export const foldingCollapsedIcon = registerIcon('folding-collapsed', Codicon.chevronRight, localize(1013, 'Icon for collapsed ranges in the editor glyph margin.'));
17
- export const foldingManualCollapsedIcon = registerIcon('folding-manual-collapsed', foldingCollapsedIcon, localize(1014, 'Icon for manually collapsed ranges in the editor glyph margin.'));
18
- export const foldingManualExpandedIcon = registerIcon('folding-manual-expanded', foldingExpandedIcon, localize(1015, 'Icon for manually expanded ranges in the editor glyph margin.'));
12
+ const foldBackground = registerColor('editor.foldBackground', { light: transparent(editorSelectionBackground, 0.3), dark: transparent(editorSelectionBackground, 0.3), hcDark: null, hcLight: null }, localize(1010, "Background color behind folded ranges. The color must not be opaque so as not to hide underlying decorations."), true);
13
+ registerColor('editor.foldPlaceholderForeground', { light: '#808080', dark: '#808080', hcDark: null, hcLight: null }, localize(1011, "Color of the collapsed text after the first line of a folded range."));
14
+ registerColor('editorGutter.foldingControlForeground', iconForeground, localize(1012, 'Color of the folding control in the editor gutter.'));
15
+ export const foldingExpandedIcon = registerIcon('folding-expanded', Codicon.chevronDown, localize(1013, 'Icon for expanded ranges in the editor glyph margin.'));
16
+ export const foldingCollapsedIcon = registerIcon('folding-collapsed', Codicon.chevronRight, localize(1014, 'Icon for collapsed ranges in the editor glyph margin.'));
17
+ export const foldingManualCollapsedIcon = registerIcon('folding-manual-collapsed', foldingCollapsedIcon, localize(1015, 'Icon for manually collapsed ranges in the editor glyph margin.'));
18
+ export const foldingManualExpandedIcon = registerIcon('folding-manual-expanded', foldingExpandedIcon, localize(1016, 'Icon for manually expanded ranges in the editor glyph margin.'));
19
19
  const foldedBackgroundMinimap = { color: themeColorFromId(foldBackground), position: 1 /* MinimapPosition.Inline */ };
20
- const collapsed = localize(1016, "Click to expand the range.");
21
- const expanded = localize(1017, "Click to collapse the range.");
20
+ const collapsed = localize(1017, "Click to expand the range.");
21
+ const expanded = localize(1018, "Click to collapse the range.");
22
22
  export class FoldingDecorationProvider {
23
23
  static { this.COLLAPSED_VISUAL_DECORATION = ModelDecorationOptions.register({
24
24
  description: 'folding-collapsed-visual-decoration',
@@ -9,7 +9,7 @@ class EditorFontZoomIn extends EditorAction {
9
9
  constructor() {
10
10
  super({
11
11
  id: 'editor.action.fontZoomIn',
12
- label: nls.localize2(1018, "Increase Editor Font Size"),
12
+ label: nls.localize2(1019, "Increase Editor Font Size"),
13
13
  precondition: undefined
14
14
  });
15
15
  }
@@ -21,7 +21,7 @@ class EditorFontZoomOut extends EditorAction {
21
21
  constructor() {
22
22
  super({
23
23
  id: 'editor.action.fontZoomOut',
24
- label: nls.localize2(1019, "Decrease Editor Font Size"),
24
+ label: nls.localize2(1020, "Decrease Editor Font Size"),
25
25
  precondition: undefined
26
26
  });
27
27
  }
@@ -33,7 +33,7 @@ class EditorFontZoomReset extends EditorAction {
33
33
  constructor() {
34
34
  super({
35
35
  id: 'editor.action.fontZoomReset',
36
- label: nls.localize2(1020, "Reset Editor Font Size"),
36
+ label: nls.localize2(1021, "Reset Editor Font Size"),
37
37
  precondition: undefined
38
38
  });
39
39
  }
@@ -185,7 +185,7 @@ class FormatDocumentAction extends EditorAction {
185
185
  constructor() {
186
186
  super({
187
187
  id: 'editor.action.formatDocument',
188
- label: nls.localize2(1021, "Format Document"),
188
+ label: nls.localize2(1022, "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(1022, "Format Selection"),
214
+ label: nls.localize2(1023, "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(1027, "Go to Next Problem (Error, Warning, Info)"); }
169
+ static { this.LABEL = nls.localize2(1028, "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(1023, 'Icon for goto next marker.')),
183
+ icon: registerIcon('marker-navigation-next', Codicon.arrowDown, nls.localize(1024, '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(1028, "Go to Previous Problem (Error, Warning, Info)"); }
192
+ static { this.LABEL = nls.localize2(1029, "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(1024, 'Icon for goto previous marker.')),
206
+ icon: registerIcon('marker-navigation-previous', Codicon.arrowUp, nls.localize(1025, '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(1029, "Go to Next Problem in Files (Error, Warning, Info)"),
217
+ label: nls.localize2(1030, "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(1025, "Next &&Problem"),
226
+ title: nls.localize(1026, "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(1030, "Go to Previous Problem in Files (Error, Warning, Info)"),
237
+ label: nls.localize2(1031, "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(1026, "Previous &&Problem"),
246
+ title: nls.localize(1027, "Previous &&Problem"),
247
247
  group: '6_problem_nav',
248
248
  order: 2
249
249
  }