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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +4 -2
  18. package/esm/vs/base/browser/ui/actionbar/actionViewItems.js.map +1 -1
  19. package/esm/vs/base/browser/ui/findinput/findInput.js +6 -1
  20. package/esm/vs/base/browser/ui/findinput/findInput.js.map +1 -1
  21. package/esm/vs/base/browser/ui/inputbox/inputBox.js +17 -1
  22. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  23. package/esm/vs/base/browser/ui/toggle/toggle.js +78 -6
  24. package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
  25. package/esm/vs/editor/browser/services/editorWorkerService.js +6 -2
  26. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  27. package/esm/vs/editor/common/config/editorConfigurationSchema.js +49 -47
  28. package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
  29. package/esm/vs/editor/common/config/editorOptions.js +410 -410
  30. package/esm/vs/editor/common/core/editorColorRegistry.js +69 -69
  31. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  32. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  33. package/esm/vs/editor/common/languages.js +56 -56
  34. package/esm/vs/editor/common/model/editStack.js +1 -1
  35. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  36. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +2 -2
  37. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  38. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  39. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  40. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  41. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +17 -17
  42. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  43. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  44. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  45. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  46. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  47. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  48. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  49. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  50. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  51. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  52. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  53. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  54. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  55. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  56. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  57. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +9 -9
  58. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  59. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  60. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  61. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  62. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  63. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  64. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  65. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  66. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  67. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  68. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  69. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  70. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  71. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  72. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  73. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  74. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  75. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  76. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  77. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  78. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  79. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  80. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  81. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  82. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +9 -9
  83. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  84. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  85. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  86. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  87. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +21 -21
  88. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -13
  89. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +1 -1
  90. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  91. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  92. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +2 -2
  93. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +6 -6
  94. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +1 -1
  95. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +3 -3
  96. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +20 -20
  97. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  98. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  99. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +31 -31
  100. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  101. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  102. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  103. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  104. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  105. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  106. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  107. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  108. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +25 -27
  109. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  110. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  111. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  112. package/esm/vs/editor/contrib/rename/browser/rename.js +11 -11
  113. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  114. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  115. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  116. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  117. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  118. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -9
  119. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +11 -11
  120. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +17 -17
  121. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +2 -2
  122. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  123. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  124. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  125. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  126. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  127. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  128. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  129. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  130. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  131. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  132. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +3 -3
  133. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  134. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  135. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  136. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  137. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  138. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  139. package/esm/vs/platform/actions/common/menuService.js +2 -2
  140. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  141. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  142. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  143. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  144. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  145. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  146. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  147. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  148. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  149. package/esm/vs/platform/list/browser/listService.js +27 -27
  150. package/esm/vs/platform/markers/common/markerService.js +2 -2
  151. package/esm/vs/platform/markers/common/markers.js +6 -6
  152. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  153. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  154. package/esm/vs/platform/quickinput/browser/media/quickInput.css +38 -4
  155. package/esm/vs/platform/quickinput/browser/quickInput.js +42 -14
  156. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  157. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  158. package/esm/vs/platform/quickinput/browser/quickInputBox.js +13 -1
  159. package/esm/vs/platform/quickinput/browser/quickInputBox.js.map +1 -1
  160. package/esm/vs/platform/quickinput/browser/quickInputController.js +22 -12
  161. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  162. package/esm/vs/platform/quickinput/browser/quickInputList.js +17 -12
  163. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  164. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +36 -8
  165. package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
  166. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  167. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +3 -3
  168. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  169. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +8 -4
  170. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  171. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  172. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  173. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -18
  174. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  175. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  176. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  177. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  178. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  179. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  180. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  181. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  182. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  183. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  184. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  185. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  186. package/package.json +2 -2
@@ -508,7 +508,7 @@ class UnfoldAction extends FoldingAction {
508
508
  constructor() {
509
509
  super({
510
510
  id: 'editor.unfold',
511
- label: nls.localize2(988, "Unfold"),
511
+ label: nls.localize2(989, "Unfold"),
512
512
  precondition: CONTEXT_FOLDING_ENABLED,
513
513
  kbOpts: {
514
514
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -569,7 +569,7 @@ class UnFoldRecursivelyAction extends FoldingAction {
569
569
  constructor() {
570
570
  super({
571
571
  id: 'editor.unfoldRecursively',
572
- label: nls.localize2(989, "Unfold Recursively"),
572
+ label: nls.localize2(990, "Unfold Recursively"),
573
573
  precondition: CONTEXT_FOLDING_ENABLED,
574
574
  kbOpts: {
575
575
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -586,7 +586,7 @@ class FoldAction extends FoldingAction {
586
586
  constructor() {
587
587
  super({
588
588
  id: 'editor.fold',
589
- label: nls.localize2(990, "Fold"),
589
+ label: nls.localize2(991, "Fold"),
590
590
  precondition: CONTEXT_FOLDING_ENABLED,
591
591
  kbOpts: {
592
592
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -653,7 +653,7 @@ class ToggleFoldAction extends FoldingAction {
653
653
  constructor() {
654
654
  super({
655
655
  id: 'editor.toggleFold',
656
- label: nls.localize2(991, "Toggle Fold"),
656
+ label: nls.localize2(992, "Toggle Fold"),
657
657
  precondition: CONTEXT_FOLDING_ENABLED,
658
658
  kbOpts: {
659
659
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -671,7 +671,7 @@ class FoldRecursivelyAction extends FoldingAction {
671
671
  constructor() {
672
672
  super({
673
673
  id: 'editor.foldRecursively',
674
- label: nls.localize2(992, "Fold Recursively"),
674
+ label: nls.localize2(993, "Fold Recursively"),
675
675
  precondition: CONTEXT_FOLDING_ENABLED,
676
676
  kbOpts: {
677
677
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -689,7 +689,7 @@ class ToggleFoldRecursivelyAction extends FoldingAction {
689
689
  constructor() {
690
690
  super({
691
691
  id: 'editor.toggleFoldRecursively',
692
- label: nls.localize2(993, "Toggle Fold Recursively"),
692
+ label: nls.localize2(994, "Toggle Fold Recursively"),
693
693
  precondition: CONTEXT_FOLDING_ENABLED,
694
694
  kbOpts: {
695
695
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -707,7 +707,7 @@ class FoldAllBlockCommentsAction extends FoldingAction {
707
707
  constructor() {
708
708
  super({
709
709
  id: 'editor.foldAllBlockComments',
710
- label: nls.localize2(994, "Fold All Block Comments"),
710
+ label: nls.localize2(995, "Fold All Block Comments"),
711
711
  precondition: CONTEXT_FOLDING_ENABLED,
712
712
  kbOpts: {
713
713
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -737,7 +737,7 @@ class FoldAllRegionsAction extends FoldingAction {
737
737
  constructor() {
738
738
  super({
739
739
  id: 'editor.foldAllMarkerRegions',
740
- label: nls.localize2(995, "Fold All Regions"),
740
+ label: nls.localize2(996, "Fold All Regions"),
741
741
  precondition: CONTEXT_FOLDING_ENABLED,
742
742
  kbOpts: {
743
743
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -767,7 +767,7 @@ class UnfoldAllRegionsAction extends FoldingAction {
767
767
  constructor() {
768
768
  super({
769
769
  id: 'editor.unfoldAllMarkerRegions',
770
- label: nls.localize2(996, "Unfold All Regions"),
770
+ label: nls.localize2(997, "Unfold All Regions"),
771
771
  precondition: CONTEXT_FOLDING_ENABLED,
772
772
  kbOpts: {
773
773
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -797,7 +797,7 @@ class FoldAllExceptAction extends FoldingAction {
797
797
  constructor() {
798
798
  super({
799
799
  id: 'editor.foldAllExcept',
800
- label: nls.localize2(997, "Fold All Except Selected"),
800
+ label: nls.localize2(998, "Fold All Except Selected"),
801
801
  precondition: CONTEXT_FOLDING_ENABLED,
802
802
  kbOpts: {
803
803
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -815,7 +815,7 @@ class UnfoldAllExceptAction extends FoldingAction {
815
815
  constructor() {
816
816
  super({
817
817
  id: 'editor.unfoldAllExcept',
818
- label: nls.localize2(998, "Unfold All Except Selected"),
818
+ label: nls.localize2(999, "Unfold All Except Selected"),
819
819
  precondition: CONTEXT_FOLDING_ENABLED,
820
820
  kbOpts: {
821
821
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -833,7 +833,7 @@ class FoldAllAction extends FoldingAction {
833
833
  constructor() {
834
834
  super({
835
835
  id: 'editor.foldAll',
836
- label: nls.localize2(999, "Fold All"),
836
+ label: nls.localize2(1000, "Fold All"),
837
837
  precondition: CONTEXT_FOLDING_ENABLED,
838
838
  kbOpts: {
839
839
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -850,7 +850,7 @@ class UnfoldAllAction extends FoldingAction {
850
850
  constructor() {
851
851
  super({
852
852
  id: 'editor.unfoldAll',
853
- label: nls.localize2(1000, "Unfold All"),
853
+ label: nls.localize2(1001, "Unfold All"),
854
854
  precondition: CONTEXT_FOLDING_ENABLED,
855
855
  kbOpts: {
856
856
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -878,7 +878,7 @@ class GotoParentFoldAction extends FoldingAction {
878
878
  constructor() {
879
879
  super({
880
880
  id: 'editor.gotoParentFold',
881
- label: nls.localize2(1001, "Go to Parent Fold"),
881
+ label: nls.localize2(1002, "Go to Parent Fold"),
882
882
  precondition: CONTEXT_FOLDING_ENABLED,
883
883
  kbOpts: {
884
884
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -906,7 +906,7 @@ class GotoPreviousFoldAction extends FoldingAction {
906
906
  constructor() {
907
907
  super({
908
908
  id: 'editor.gotoPreviousFold',
909
- label: nls.localize2(1002, "Go to Previous Folding Range"),
909
+ label: nls.localize2(1003, "Go to Previous Folding Range"),
910
910
  precondition: CONTEXT_FOLDING_ENABLED,
911
911
  kbOpts: {
912
912
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -934,7 +934,7 @@ class GotoNextFoldAction extends FoldingAction {
934
934
  constructor() {
935
935
  super({
936
936
  id: 'editor.gotoNextFold',
937
- label: nls.localize2(1003, "Go to Next Folding Range"),
937
+ label: nls.localize2(1004, "Go to Next Folding Range"),
938
938
  precondition: CONTEXT_FOLDING_ENABLED,
939
939
  kbOpts: {
940
940
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -961,7 +961,7 @@ class FoldRangeFromSelectionAction extends FoldingAction {
961
961
  constructor() {
962
962
  super({
963
963
  id: 'editor.createFoldingRangeFromSelection',
964
- label: nls.localize2(1004, "Create Folding Range from Selection"),
964
+ label: nls.localize2(1005, "Create Folding Range from Selection"),
965
965
  precondition: CONTEXT_FOLDING_ENABLED,
966
966
  kbOpts: {
967
967
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -1009,7 +1009,7 @@ class RemoveFoldRangeFromSelectionAction extends FoldingAction {
1009
1009
  constructor() {
1010
1010
  super({
1011
1011
  id: 'editor.removeManualFoldingRanges',
1012
- label: nls.localize2(1005, "Remove Manual Folding Ranges"),
1012
+ label: nls.localize2(1006, "Remove Manual Folding Ranges"),
1013
1013
  precondition: CONTEXT_FOLDING_ENABLED,
1014
1014
  kbOpts: {
1015
1015
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -1035,7 +1035,7 @@ class ToggleImportFoldAction extends FoldingAction {
1035
1035
  constructor() {
1036
1036
  super({
1037
1037
  id: 'editor.toggleImportFold',
1038
- label: nls.localize2(1006, "Toggle Import Fold"),
1038
+ label: nls.localize2(1007, "Toggle Import Fold"),
1039
1039
  precondition: CONTEXT_FOLDING_ENABLED,
1040
1040
  kbOpts: {
1041
1041
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -1078,7 +1078,7 @@ registerEditorAction(ToggleImportFoldAction);
1078
1078
  for (let i = 1; i <= 7; i++) {
1079
1079
  registerInstantiatedEditorAction(new FoldLevelAction({
1080
1080
  id: FoldLevelAction.ID(i),
1081
- label: nls.localize2(1007, "Fold Level {0}", i),
1081
+ label: nls.localize2(1008, "Fold Level {0}", i),
1082
1082
  precondition: CONTEXT_FOLDING_ENABLED,
1083
1083
  kbOpts: {
1084
1084
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -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"]}