monaco-editor-core 0.56.0-dev-20251121 → 0.56.0-dev-20251122

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 (70) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +2 -0
  18. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  19. package/esm/vs/base/browser/ui/list/rowCache.js +1 -4
  20. package/esm/vs/base/browser/ui/list/rowCache.js.map +1 -1
  21. package/esm/vs/base/browser/ui/menu/menu.js +14 -12
  22. package/esm/vs/base/browser/ui/menu/menu.js.map +1 -1
  23. package/esm/vs/base/common/map.js +8 -5
  24. package/esm/vs/base/common/map.js.map +1 -1
  25. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js +1 -4
  26. package/esm/vs/base/common/observableInternal/observables/derivedImpl.js.map +1 -1
  27. package/esm/vs/base/common/worker/webWorker.js +10 -7
  28. package/esm/vs/base/common/worker/webWorker.js.map +1 -1
  29. package/esm/vs/editor/browser/services/editorWorkerService.js +1 -1
  30. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  31. package/esm/vs/editor/contrib/find/browser/findWidgetSearchHistory.js.map +1 -1
  32. package/esm/vs/editor/contrib/find/browser/replaceWidgetHistory.js.map +1 -1
  33. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  34. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +29 -16
  35. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  36. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +42 -5
  37. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  38. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +10 -0
  39. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js +1 -1
  40. package/esm/vs/editor/standalone/browser/services/standaloneWebWorkerService.js.map +1 -1
  41. package/esm/vs/platform/actionWidget/browser/actionWidget.css +7 -0
  42. package/esm/vs/platform/hover/browser/hoverService.js +17 -8
  43. package/esm/vs/platform/hover/browser/hoverService.js.map +1 -1
  44. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +41 -8
  45. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js.map +1 -1
  46. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  47. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  48. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  49. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  50. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  51. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  52. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  53. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +8 -0
  54. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  55. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  56. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  57. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  58. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  59. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  60. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  61. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  62. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  63. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  64. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  65. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  66. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  67. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  68. package/esm/vs/platform/webWorker/browser/webWorkerDescriptor.js.map +1 -1
  69. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  70. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/find/browser/replaceWidgetHistory.ts","vs/editor/contrib/find/browser/replaceWidgetHistory.ts"],"names":[],"mappings":"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","file":"replaceWidgetHistory.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 { Emitter, Event } from '../../../../base/common/event.js';\nimport { IHistory } from '../../../../base/common/history.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\n\nexport class ReplaceWidgetHistory implements IHistory<string> {\n\tpublic static readonly FIND_HISTORY_KEY = 'workbench.replace.history';\n\tprivate inMemoryValues: Set<string> = new Set();\n\tpublic onDidChange?: Event<string[]>;\n\tprivate _onDidChangeEmitter: Emitter<string[]>;\n\n\tprivate static _instance: ReplaceWidgetHistory | null = null;\n\n\tstatic getOrCreate(\n\t\tstorageService: IStorageService,\n\t): ReplaceWidgetHistory {\n\t\tif (!ReplaceWidgetHistory._instance) {\n\t\t\tReplaceWidgetHistory._instance = new ReplaceWidgetHistory(storageService);\n\t\t}\n\t\treturn ReplaceWidgetHistory._instance;\n\t}\n\n\tconstructor(\n\t\t@IStorageService private readonly storageService: IStorageService,\n\t) {\n\t\tthis._onDidChangeEmitter = new Emitter<string[]>();\n\t\tthis.onDidChange = this._onDidChangeEmitter.event;\n\t\tthis.load();\n\t}\n\n\tdelete(t: string): boolean {\n\t\tconst result = this.inMemoryValues.delete(t);\n\t\tthis.save();\n\t\treturn result;\n\t}\n\n\tadd(t: string): this {\n\t\tthis.inMemoryValues.add(t);\n\t\tthis.save();\n\t\treturn this;\n\t}\n\n\thas(t: string): boolean {\n\t\treturn this.inMemoryValues.has(t);\n\t}\n\n\tforEach(callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any): void {\n\t\t// fetch latest from storage\n\t\tthis.load();\n\t\treturn this.inMemoryValues.forEach(callbackfn);\n\t}\n\treplace?(t: string[]): void {\n\t\tthis.inMemoryValues = new Set(t);\n\t\tthis.save();\n\t}\n\n\tload() {\n\t\tlet result: [] | undefined;\n\t\tconst raw = this.storageService.get(\n\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\tStorageScope.WORKSPACE\n\t\t);\n\n\t\tif (raw) {\n\t\t\ttry {\n\t\t\t\tresult = JSON.parse(raw);\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid data\n\t\t\t}\n\t\t}\n\n\t\tthis.inMemoryValues = new Set(result || []);\n\t}\n\n\t// Run saves async\n\tsave(): Promise<void> {\n\t\tconst elements: string[] = [];\n\t\tthis.inMemoryValues.forEach(e => elements.push(e));\n\t\treturn new Promise<void>(resolve => {\n\t\t\tthis.storageService.store(\n\t\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\t\tJSON.stringify(elements),\n\t\t\t\tStorageScope.WORKSPACE,\n\t\t\t\tStorageTarget.USER,\n\t\t\t);\n\t\t\tthis._onDidChangeEmitter.fire(elements);\n\t\t\tresolve();\n\t\t});\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { IHistory } from '../../../../base/common/history.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\n\nexport class ReplaceWidgetHistory implements IHistory<string> {\n\tpublic static readonly FIND_HISTORY_KEY = 'workbench.replace.history';\n\tprivate inMemoryValues: Set<string> = new Set();\n\tpublic onDidChange?: Event<string[]>;\n\tprivate _onDidChangeEmitter: Emitter<string[]>;\n\n\tprivate static _instance: ReplaceWidgetHistory | null = null;\n\n\tstatic getOrCreate(\n\t\tstorageService: IStorageService,\n\t): ReplaceWidgetHistory {\n\t\tif (!ReplaceWidgetHistory._instance) {\n\t\t\tReplaceWidgetHistory._instance = new ReplaceWidgetHistory(storageService);\n\t\t}\n\t\treturn ReplaceWidgetHistory._instance;\n\t}\n\n\tconstructor(\n\t\t@IStorageService private readonly storageService: IStorageService,\n\t) {\n\t\tthis._onDidChangeEmitter = new Emitter<string[]>();\n\t\tthis.onDidChange = this._onDidChangeEmitter.event;\n\t\tthis.load();\n\t}\n\n\tdelete(t: string): boolean {\n\t\tconst result = this.inMemoryValues.delete(t);\n\t\tthis.save();\n\t\treturn result;\n\t}\n\n\tadd(t: string): this {\n\t\tthis.inMemoryValues.add(t);\n\t\tthis.save();\n\t\treturn this;\n\t}\n\n\thas(t: string): boolean {\n\t\treturn this.inMemoryValues.has(t);\n\t}\n\n\tforEach(callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: any): void {\n\t\t// fetch latest from storage\n\t\tthis.load();\n\t\treturn this.inMemoryValues.forEach(callbackfn);\n\t}\n\treplace?(t: string[]): void {\n\t\tthis.inMemoryValues = new Set(t);\n\t\tthis.save();\n\t}\n\n\tload() {\n\t\tlet result: [] | undefined;\n\t\tconst raw = this.storageService.get(\n\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\tStorageScope.WORKSPACE\n\t\t);\n\n\t\tif (raw) {\n\t\t\ttry {\n\t\t\t\tresult = JSON.parse(raw);\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid data\n\t\t\t}\n\t\t}\n\n\t\tthis.inMemoryValues = new Set(result || []);\n\t}\n\n\t// Run saves async\n\tsave(): Promise<void> {\n\t\tconst elements: string[] = [];\n\t\tthis.inMemoryValues.forEach(e => elements.push(e));\n\t\treturn new Promise<void>(resolve => {\n\t\t\tthis.storageService.store(\n\t\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\t\tJSON.stringify(elements),\n\t\t\t\tStorageScope.WORKSPACE,\n\t\t\t\tStorageTarget.USER,\n\t\t\t);\n\t\t\tthis._onDidChangeEmitter.fire(elements);\n\t\t\tresolve();\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/contrib/find/browser/replaceWidgetHistory.ts","vs/editor/contrib/find/browser/replaceWidgetHistory.ts"],"names":[],"mappings":"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","file":"replaceWidgetHistory.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 { Emitter, Event } from '../../../../base/common/event.js';\nimport { IHistory } from '../../../../base/common/history.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\n\nexport class ReplaceWidgetHistory implements IHistory<string> {\n\tpublic static readonly FIND_HISTORY_KEY = 'workbench.replace.history';\n\tprivate inMemoryValues: Set<string> = new Set();\n\tpublic onDidChange?: Event<string[]>;\n\tprivate _onDidChangeEmitter: Emitter<string[]>;\n\n\tprivate static _instance: ReplaceWidgetHistory | null = null;\n\n\tstatic getOrCreate(\n\t\tstorageService: IStorageService,\n\t): ReplaceWidgetHistory {\n\t\tif (!ReplaceWidgetHistory._instance) {\n\t\t\tReplaceWidgetHistory._instance = new ReplaceWidgetHistory(storageService);\n\t\t}\n\t\treturn ReplaceWidgetHistory._instance;\n\t}\n\n\tconstructor(\n\t\t@IStorageService private readonly storageService: IStorageService,\n\t) {\n\t\tthis._onDidChangeEmitter = new Emitter<string[]>();\n\t\tthis.onDidChange = this._onDidChangeEmitter.event;\n\t\tthis.load();\n\t}\n\n\tdelete(t: string): boolean {\n\t\tconst result = this.inMemoryValues.delete(t);\n\t\tthis.save();\n\t\treturn result;\n\t}\n\n\tadd(t: string): this {\n\t\tthis.inMemoryValues.add(t);\n\t\tthis.save();\n\t\treturn this;\n\t}\n\n\thas(t: string): boolean {\n\t\treturn this.inMemoryValues.has(t);\n\t}\n\n\tforEach(callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: unknown): void {\n\t\t// fetch latest from storage\n\t\tthis.load();\n\t\treturn this.inMemoryValues.forEach(callbackfn);\n\t}\n\treplace?(t: string[]): void {\n\t\tthis.inMemoryValues = new Set(t);\n\t\tthis.save();\n\t}\n\n\tload() {\n\t\tlet result: [] | undefined;\n\t\tconst raw = this.storageService.get(\n\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\tStorageScope.WORKSPACE\n\t\t);\n\n\t\tif (raw) {\n\t\t\ttry {\n\t\t\t\tresult = JSON.parse(raw);\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid data\n\t\t\t}\n\t\t}\n\n\t\tthis.inMemoryValues = new Set(result || []);\n\t}\n\n\t// Run saves async\n\tsave(): Promise<void> {\n\t\tconst elements: string[] = [];\n\t\tthis.inMemoryValues.forEach(e => elements.push(e));\n\t\treturn new Promise<void>(resolve => {\n\t\t\tthis.storageService.store(\n\t\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\t\tJSON.stringify(elements),\n\t\t\t\tStorageScope.WORKSPACE,\n\t\t\t\tStorageTarget.USER,\n\t\t\t);\n\t\t\tthis._onDidChangeEmitter.fire(elements);\n\t\t\tresolve();\n\t\t});\n\t}\n}\n","/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { IHistory } from '../../../../base/common/history.js';\nimport { IStorageService, StorageScope, StorageTarget } from '../../../../platform/storage/common/storage.js';\n\nexport class ReplaceWidgetHistory implements IHistory<string> {\n\tpublic static readonly FIND_HISTORY_KEY = 'workbench.replace.history';\n\tprivate inMemoryValues: Set<string> = new Set();\n\tpublic onDidChange?: Event<string[]>;\n\tprivate _onDidChangeEmitter: Emitter<string[]>;\n\n\tprivate static _instance: ReplaceWidgetHistory | null = null;\n\n\tstatic getOrCreate(\n\t\tstorageService: IStorageService,\n\t): ReplaceWidgetHistory {\n\t\tif (!ReplaceWidgetHistory._instance) {\n\t\t\tReplaceWidgetHistory._instance = new ReplaceWidgetHistory(storageService);\n\t\t}\n\t\treturn ReplaceWidgetHistory._instance;\n\t}\n\n\tconstructor(\n\t\t@IStorageService private readonly storageService: IStorageService,\n\t) {\n\t\tthis._onDidChangeEmitter = new Emitter<string[]>();\n\t\tthis.onDidChange = this._onDidChangeEmitter.event;\n\t\tthis.load();\n\t}\n\n\tdelete(t: string): boolean {\n\t\tconst result = this.inMemoryValues.delete(t);\n\t\tthis.save();\n\t\treturn result;\n\t}\n\n\tadd(t: string): this {\n\t\tthis.inMemoryValues.add(t);\n\t\tthis.save();\n\t\treturn this;\n\t}\n\n\thas(t: string): boolean {\n\t\treturn this.inMemoryValues.has(t);\n\t}\n\n\tforEach(callbackfn: (value: string, value2: string, set: Set<string>) => void, thisArg?: unknown): void {\n\t\t// fetch latest from storage\n\t\tthis.load();\n\t\treturn this.inMemoryValues.forEach(callbackfn);\n\t}\n\treplace?(t: string[]): void {\n\t\tthis.inMemoryValues = new Set(t);\n\t\tthis.save();\n\t}\n\n\tload() {\n\t\tlet result: [] | undefined;\n\t\tconst raw = this.storageService.get(\n\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\tStorageScope.WORKSPACE\n\t\t);\n\n\t\tif (raw) {\n\t\t\ttry {\n\t\t\t\tresult = JSON.parse(raw);\n\t\t\t} catch (e) {\n\t\t\t\t// Invalid data\n\t\t\t}\n\t\t}\n\n\t\tthis.inMemoryValues = new Set(result || []);\n\t}\n\n\t// Run saves async\n\tsave(): Promise<void> {\n\t\tconst elements: string[] = [];\n\t\tthis.inMemoryValues.forEach(e => elements.push(e));\n\t\treturn new Promise<void>(resolve => {\n\t\t\tthis.storageService.store(\n\t\t\t\tReplaceWidgetHistory.FIND_HISTORY_KEY,\n\t\t\t\tJSON.stringify(elements),\n\t\t\t\tStorageScope.WORKSPACE,\n\t\t\t\tStorageTarget.USER,\n\t\t\t);\n\t\t\tthis._onDidChangeEmitter.fire(elements);\n\t\t\tresolve();\n\t\t});\n\t}\n}\n"]}
@@ -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: any) {\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"]}
@@ -33,14 +33,16 @@ import { Point } from '../../../../../../../common/core/2d/point.js';
33
33
  import { Size2D } from '../../../../../../../common/core/2d/size.js';
34
34
  import { getMaxTowerHeightInAvailableArea } from '../../utils/towersLayout.js';
35
35
  import { IThemeService } from '../../../../../../../../platform/theme/common/themeService.js';
36
+ import { IKeybindingService } from '../../../../../../../../platform/keybinding/common/keybinding.js';
36
37
  import { getEditorBlendedColor, inlineEditIndicatorPrimaryBackground, inlineEditIndicatorSecondaryBackground, inlineEditIndicatorsuccessfulBackground } from '../../theme.js';
37
- import { asCssVariable, descriptionForeground, editorBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';
38
+ import { asCssVariable, descriptionForeground, editorBackground, editorWidgetBackground } from '../../../../../../../../platform/theme/common/colorRegistry.js';
38
39
  import { LongDistancePreviewEditor } from './longDistancePreviewEditor.js';
40
+ import { jumpToNextInlineEditId } from '../../../../controller/commandIds.js';
39
41
  const BORDER_RADIUS = 4;
40
- const MAX_WIDGET_WIDTH = 400;
41
- const MIN_WIDGET_WIDTH = 200;
42
+ const MAX_WIDGET_WIDTH = { EMPTY_SPACE: 425, OVERLAY: 375 };
43
+ const MIN_WIDGET_WIDTH = 250;
42
44
  let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disposable {
43
- constructor(_editor, _viewState, _previewTextModel, _tabAction, _instantiationService, _themeService) {
45
+ constructor(_editor, _viewState, _previewTextModel, _tabAction, _instantiationService, _themeService, _keybindingService) {
44
46
  super();
45
47
  this._editor = _editor;
46
48
  this._viewState = _viewState;
@@ -48,6 +50,7 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
48
50
  this._tabAction = _tabAction;
49
51
  this._instantiationService = _instantiationService;
50
52
  this._themeService = _themeService;
53
+ this._keybindingService = _keybindingService;
51
54
  this.onDidClick = Event.None;
52
55
  this._viewWithElement = undefined;
53
56
  this._hintTextPosition = derived(this, (reader) => {
@@ -106,7 +109,7 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
106
109
  const lineNumber = lineSizes.lineRange.startLineNumber + idx;
107
110
  let linePaddingLeft = 20;
108
111
  if (lineNumber === viewState.hint.lineNumber) {
109
- linePaddingLeft = 100;
112
+ linePaddingLeft = 40;
110
113
  }
111
114
  return new Size2D(Math.max(0, editorTrueContentWidth - s.width - linePaddingLeft), s.height);
112
115
  });
@@ -139,9 +142,12 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
139
142
  const horizontalWidgetRange = OffsetRange.ofStartAndLength(editorTrueContentRight - maxWidth, maxWidth);
140
143
  return { horizontalWidgetRange, verticalWidgetRange };
141
144
  });
145
+ let position = 'empty-space';
142
146
  if (!possibleWidgetOutline) {
147
+ position = 'overlay';
148
+ const maxAvailableWidth = Math.min(editorLayout.width - editorLayout.contentLeft, MAX_WIDGET_WIDTH.OVERLAY);
143
149
  possibleWidgetOutline = {
144
- horizontalWidgetRange: OffsetRange.ofStartAndLength(editorTrueContentRight - MAX_WIDGET_WIDTH, MAX_WIDGET_WIDTH),
150
+ horizontalWidgetRange: OffsetRange.ofStartAndLength(editorTrueContentRight - maxAvailableWidth, maxAvailableWidth),
145
151
  verticalWidgetRange: getWidgetVerticalOutline(viewState.hint.lineNumber + 2).delta(10),
146
152
  };
147
153
  }
@@ -153,11 +159,11 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
153
159
  if (showAvailableSpace) {
154
160
  debugView(debugLogRects({ rectAvailableSpace }, this._editor.getDomNode()), reader);
155
161
  }
156
- const maxWidgetWidth = Math.min(MAX_WIDGET_WIDTH, previewEditorContentLayout.maxEditorWidth + previewEditorMargin + widgetPadding);
162
+ const maxWidgetWidth = Math.min(position === 'overlay' ? MAX_WIDGET_WIDTH.OVERLAY : MAX_WIDGET_WIDTH.EMPTY_SPACE, previewEditorContentLayout.maxEditorWidth + previewEditorMargin + widgetPadding);
157
163
  const layout = distributeFlexBoxLayout(rectAvailableSpace.width, {
158
164
  spaceBefore: { min: 0, max: 10, priority: 1 },
159
165
  content: { min: 50, rules: [{ max: 150, priority: 2 }, { max: maxWidgetWidth, priority: 1 }] },
160
- spaceAfter: { min: 20 },
166
+ spaceAfter: { min: 10 },
161
167
  });
162
168
  if (!layout) {
163
169
  return null;
@@ -203,13 +209,14 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
203
209
  }, [
204
210
  derived(this, _reader => [this._widgetContent]),
205
211
  ]);
206
- this._widgetContent = derived(this, reader => // TODO how to not use derived but not move into constructor?
212
+ this._widgetContent = derived(this, reader => // TODO@hediet: remove when n.div lazily creates previewEditor.element node
207
213
  n.div({
214
+ class: 'inline-edits-long-distance-hint-widget',
208
215
  style: {
209
216
  position: 'absolute',
210
217
  overflow: 'hidden',
211
218
  cursor: 'pointer',
212
- background: 'var(--vscode-editorWidget-background)',
219
+ background: asCssVariable(editorWidgetBackground),
213
220
  padding: this._previewEditorLayoutInfo.map(i => i?.widgetPadding),
214
221
  boxSizing: 'border-box',
215
222
  borderRadius: BORDER_RADIUS,
@@ -232,7 +239,7 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
232
239
  style: {
233
240
  overflow: 'hidden',
234
241
  padding: this._previewEditorLayoutInfo.map(i => i?.previewEditorMargin),
235
- background: 'var(--vscode-editor-background)',
242
+ background: asCssVariable(editorBackground),
236
243
  pointerEvents: 'none',
237
244
  },
238
245
  }, [
@@ -255,7 +262,7 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
255
262
  const icon = SymbolKinds.toIcon(item.kind);
256
263
  outlineElements.push(n.div({
257
264
  class: 'breadcrumb-item',
258
- style: { display: 'flex', alignItems: 'center', flex: '1 1 auto', overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' },
265
+ style: { display: 'flex', alignItems: 'center', flex: '1 1 auto', whiteSpace: 'nowrap', overflow: 'hidden', textOverflow: 'ellipsis' },
259
266
  }, [
260
267
  renderIcon(icon),
261
268
  '\u00a0',
@@ -266,14 +273,19 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
266
273
  ]));
267
274
  }
268
275
  }
269
- children.push(n.div({ class: 'outline-elements' }, outlineElements));
276
+ children.push(n.div({ class: 'outline-elements', style: { overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' } }, outlineElements));
270
277
  // Show Edit Direction
271
278
  const arrowIcon = isEditBelowHint(viewState) ? Codicon.arrowDown : Codicon.arrowUp;
279
+ const keybinding = this._keybindingService.lookupKeybinding(jumpToNextInlineEditId);
280
+ let label = 'Go to suggestion';
281
+ if (keybinding && keybinding.getLabel() === 'Tab') {
282
+ label = 'Tab to suggestion';
283
+ }
272
284
  children.push(n.div({
273
285
  class: 'go-to-label',
274
- style: { display: 'flex', alignItems: 'center', flex: '0 0 auto', marginLeft: '14px' },
286
+ style: { position: 'relative', display: 'flex', alignItems: 'center', flex: '0 0 auto', paddingLeft: '6px' },
275
287
  }, [
276
- 'Go To Edit',
288
+ label,
277
289
  '\u00a0',
278
290
  renderIcon(arrowIcon),
279
291
  ]));
@@ -337,7 +349,8 @@ let InlineEditsLongDistanceHint = class InlineEditsLongDistanceHint extends Disp
337
349
  };
338
350
  InlineEditsLongDistanceHint = __decorate([
339
351
  __param(4, IInstantiationService),
340
- __param(5, IThemeService)
352
+ __param(5, IThemeService),
353
+ __param(6, IKeybindingService)
341
354
  ], InlineEditsLongDistanceHint);
342
355
  export { InlineEditsLongDistanceHint };
343
356
  function lengthsToOffsetRanges(lengths, initialOffset = 0) {