monaco-editor-core 0.53.0 → 0.54.0-dev-20250910

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 (81) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.de.js +2 -2
  3. package/esm/nls.messages.es.js +2 -2
  4. package/esm/nls.messages.fr.js +2 -2
  5. package/esm/nls.messages.it.js +2 -2
  6. package/esm/nls.messages.ja.js +2 -2
  7. package/esm/nls.messages.js +1 -1
  8. package/esm/nls.messages.json +1 -1
  9. package/esm/nls.messages.ko.js +2 -2
  10. package/esm/nls.messages.ru.js +2 -2
  11. package/esm/nls.messages.zh-cn.js +2 -2
  12. package/esm/nls.messages.zh-tw.js +2 -2
  13. package/esm/nls.metadata.json +0 -2
  14. package/esm/vs/base/browser/domSanitize.js +18 -8
  15. package/esm/vs/base/browser/domSanitize.js.map +1 -1
  16. package/esm/vs/base/browser/domStylesheets.js +3 -0
  17. package/esm/vs/base/browser/domStylesheets.js.map +1 -1
  18. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  19. package/esm/vs/base/browser/ui/dropdown/dropdown.js +1 -2
  20. package/esm/vs/base/browser/ui/dropdown/dropdown.js.map +1 -1
  21. package/esm/vs/base/common/async.js +6 -173
  22. package/esm/vs/base/common/async.js.map +1 -1
  23. package/esm/vs/base/common/fuzzyScorer.js +6 -3
  24. package/esm/vs/base/common/fuzzyScorer.js.map +1 -1
  25. package/esm/vs/base/common/strings.js +0 -3
  26. package/esm/vs/base/common/strings.js.map +1 -1
  27. package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js +23 -13
  28. package/esm/vs/editor/browser/controller/editContext/native/screenReaderContentRich.js.map +1 -1
  29. package/esm/vs/editor/browser/services/hoverService/hover.css +1 -1
  30. package/esm/vs/editor/common/config/editorOptions.js +1 -1
  31. package/esm/vs/editor/common/config/editorOptions.js.map +1 -1
  32. package/esm/vs/editor/common/viewModel/screenReaderSimpleModel.js.map +1 -1
  33. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +9 -4
  34. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  35. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +2 -2
  36. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  37. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +15 -10
  38. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  39. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +13 -4
  40. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +5 -4
  41. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  42. package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js +1 -1
  43. package/esm/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.js.map +1 -1
  44. package/esm/vs/platform/actionWidget/browser/actionList.js +2 -2
  45. package/esm/vs/platform/actionWidget/browser/actionList.js.map +1 -1
  46. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -12
  47. package/esm/vs/platform/actions/browser/actionViewItemService.js.map +1 -1
  48. package/esm/vs/platform/actions/browser/toolbar.js +3 -3
  49. package/esm/vs/platform/actions/browser/toolbar.js.map +1 -1
  50. package/esm/vs/platform/contextkey/common/contextkeys.js +1 -2
  51. package/esm/vs/platform/contextkey/common/contextkeys.js.map +1 -1
  52. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  53. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  54. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  55. package/esm/vs/platform/list/browser/listService.js +27 -27
  56. package/esm/vs/platform/markers/common/markerService.js +2 -2
  57. package/esm/vs/platform/markers/common/markers.js +6 -6
  58. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +7 -7
  59. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  60. package/esm/vs/platform/quickinput/browser/quickInput.js +10 -10
  61. package/esm/vs/platform/quickinput/browser/quickInputActions.js +3 -3
  62. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  63. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  64. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  65. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  66. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  67. package/esm/vs/platform/theme/common/colors/baseColors.js +17 -17
  68. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  69. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  70. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  71. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  72. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  73. package/esm/vs/platform/theme/common/colors/minimapColors.js +11 -11
  74. package/esm/vs/platform/theme/common/colors/miscColors.js +15 -15
  75. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  76. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  77. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  78. package/esm/vs/platform/undoRedo/common/undoRedoService.js +20 -20
  79. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  80. package/package.json +2 -2
  81. package/version.txt +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/linesOperations/browser/linesOperations.ts"],"names":[],"mappings":"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","file":"linesOperations.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 { KeyChord, KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { CoreEditingCommands } from '../../../browser/coreCommands.js';\nimport { IActiveCodeEditor, ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, IActionOptions, registerEditorAction, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection, ReplaceCommandThatSelectsText } from '../../../common/commands/replaceCommand.js';\nimport { TrimTrailingWhitespaceCommand } from '../../../common/commands/trimTrailingWhitespaceCommand.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { TypeOperations } from '../../../common/cursor/cursorTypeOperations.js';\nimport { EnterOperation } from '../../../common/cursor/cursorTypeEditOperations.js';\nimport { EditOperation, ISingleEditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ICommand } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { CopyLinesCommand } from './copyLinesCommand.js';\nimport { MoveLinesCommand } from './moveLinesCommand.js';\nimport { SortLinesCommand } from './sortLinesCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\n// copy lines\n\nabstract class AbstractCopyLinesAction extends EditorAction {\n\n\tprivate readonly down: boolean;\n\n\tconstructor(down: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t\tthis.down = down;\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections().map((selection, index) => ({ selection, index, ignore: false }));\n\t\tselections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n\n\t\t// Remove selections that would result in copying the same line\n\t\tlet prev = selections[0];\n\t\tfor (let i = 1; i < selections.length; i++) {\n\t\t\tconst curr = selections[i];\n\t\t\tif (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n\t\t\t\t// these two selections would copy the same line\n\t\t\t\tif (prev.index < curr.index) {\n\t\t\t\t\t// prev wins\n\t\t\t\t\tcurr.ignore = true;\n\t\t\t\t} else {\n\t\t\t\t\t// curr wins\n\t\t\t\t\tprev.ignore = true;\n\t\t\t\t\tprev = curr;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\t\tfor (const selection of selections) {\n\t\t\tcommands.push(new CopyLinesCommand(selection.selection, this.down, selection.ignore));\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nclass CopyLinesUpAction extends AbstractCopyLinesAction {\n\tconstructor() {\n\t\tsuper(false, {\n\t\t\tid: 'editor.action.copyLinesUpAction',\n\t\t\tlabel: nls.localize2('lines.copyUp', \"Copy Line Up\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyMod.Shift | KeyCode.UpArrow,\n\t\t\t\tlinux: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.UpArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miCopyLinesUp', comment: ['&& denotes a mnemonic'] }, \"&&Copy Line Up\"),\n\t\t\t\torder: 1\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass CopyLinesDownAction extends AbstractCopyLinesAction {\n\tconstructor() {\n\t\tsuper(true, {\n\t\t\tid: 'editor.action.copyLinesDownAction',\n\t\t\tlabel: nls.localize2('lines.copyDown', \"Copy Line Down\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyMod.Shift | KeyCode.DownArrow,\n\t\t\t\tlinux: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.DownArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miCopyLinesDown', comment: ['&& denotes a mnemonic'] }, \"Co&&py Line Down\"),\n\t\t\t\torder: 2\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class DuplicateSelectionAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.duplicateSelection',\n\t\t\tlabel: nls.localize2('duplicateSelection', \"Duplicate Selection\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miDuplicateSelection', comment: ['&& denotes a mnemonic'] }, \"&&Duplicate Selection\"),\n\t\t\t\torder: 5\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\t\tconst selections = editor.getSelections();\n\t\tconst model = editor.getModel();\n\n\t\tfor (const selection of selections) {\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\tcommands.push(new CopyLinesCommand(selection, true));\n\t\t\t} else {\n\t\t\t\tconst insertSelection = new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn);\n\t\t\t\tcommands.push(new ReplaceCommandThatSelectsText(insertSelection, model.getValueInRange(selection)));\n\t\t\t}\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\n// move lines\n\nabstract class AbstractMoveLinesAction extends EditorAction {\n\n\tprivate readonly down: boolean;\n\n\tconstructor(down: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t\tthis.down = down;\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\t\tconst commands: ICommand[] = [];\n\t\tconst selections = editor.getSelections() || [];\n\t\tconst autoIndent = editor.getOption(EditorOption.autoIndent);\n\n\t\tfor (const selection of selections) {\n\t\t\tcommands.push(new MoveLinesCommand(selection, this.down, autoIndent, languageConfigurationService));\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nclass MoveLinesUpAction extends AbstractMoveLinesAction {\n\tconstructor() {\n\t\tsuper(false, {\n\t\t\tid: 'editor.action.moveLinesUpAction',\n\t\t\tlabel: nls.localize2('lines.moveUp', \"Move Line Up\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyCode.UpArrow,\n\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.UpArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miMoveLinesUp', comment: ['&& denotes a mnemonic'] }, \"Mo&&ve Line Up\"),\n\t\t\t\torder: 3\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass MoveLinesDownAction extends AbstractMoveLinesAction {\n\tconstructor() {\n\t\tsuper(true, {\n\t\t\tid: 'editor.action.moveLinesDownAction',\n\t\t\tlabel: nls.localize2('lines.moveDown', \"Move Line Down\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyCode.DownArrow,\n\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.DownArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miMoveLinesDown', comment: ['&& denotes a mnemonic'] }, \"Move &&Line Down\"),\n\t\t\t\torder: 4\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport abstract class AbstractSortLinesAction extends EditorAction {\n\tprivate readonly descending: boolean;\n\n\tconstructor(descending: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t\tthis.descending = descending;\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tlet selections = editor.getSelections();\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\t// Apply to whole document.\n\t\t\tselections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n\t\t}\n\n\t\tfor (const selection of selections) {\n\t\t\tif (!SortLinesCommand.canRun(editor.getModel(), selection, this.descending)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\t\tfor (let i = 0, len = selections.length; i < len; i++) {\n\t\t\tcommands[i] = new SortLinesCommand(selections[i], this.descending);\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class SortLinesAscendingAction extends AbstractSortLinesAction {\n\tconstructor() {\n\t\tsuper(false, {\n\t\t\tid: 'editor.action.sortLinesAscending',\n\t\t\tlabel: nls.localize2('lines.sortAscending', \"Sort Lines Ascending\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n}\n\nexport class SortLinesDescendingAction extends AbstractSortLinesAction {\n\tconstructor() {\n\t\tsuper(true, {\n\t\t\tid: 'editor.action.sortLinesDescending',\n\t\t\tlabel: nls.localize2('lines.sortDescending', \"Sort Lines Descending\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n}\n\nexport class DeleteDuplicateLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.removeDuplicateLines',\n\t\t\tlabel: nls.localize2('lines.deleteDuplicates', \"Delete Duplicate Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model: ITextModel = editor.getModel();\n\t\tif (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst endCursorState: Selection[] = [];\n\n\t\tlet linesDeleted = 0;\n\t\tlet updateSelection = true;\n\n\t\tlet selections = editor.getSelections();\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\t// Apply to whole document.\n\t\t\tselections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n\t\t\tupdateSelection = false;\n\t\t}\n\n\t\tfor (const selection of selections) {\n\t\t\tconst uniqueLines = new Set();\n\t\t\tconst lines = [];\n\n\t\t\tfor (let i = selection.startLineNumber; i <= selection.endLineNumber; i++) {\n\t\t\t\tconst line = model.getLineContent(i);\n\n\t\t\t\tif (uniqueLines.has(line)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlines.push(line);\n\t\t\t\tuniqueLines.add(line);\n\t\t\t}\n\n\n\t\t\tconst selectionToReplace = new Selection(\n\t\t\t\tselection.startLineNumber,\n\t\t\t\t1,\n\t\t\t\tselection.endLineNumber,\n\t\t\t\tmodel.getLineMaxColumn(selection.endLineNumber)\n\t\t\t);\n\n\t\t\tconst adjustedSelectionStart = selection.startLineNumber - linesDeleted;\n\t\t\tconst finalSelection = new Selection(\n\t\t\t\tadjustedSelectionStart,\n\t\t\t\t1,\n\t\t\t\tadjustedSelectionStart + lines.length - 1,\n\t\t\t\tlines[lines.length - 1].length\n\t\t\t);\n\n\t\t\tedits.push(EditOperation.replace(selectionToReplace, lines.join('\\n')));\n\t\t\tendCursorState.push(finalSelection);\n\n\t\t\tlinesDeleted += (selection.endLineNumber - selection.startLineNumber + 1) - lines.length;\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, updateSelection ? endCursorState : undefined);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class ReverseLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.reverseLines',\n\t\t\tlabel: nls.localize2('lines.reverseLines', \"Reverse lines\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model: ITextModel = editor.getModel();\n\t\tconst originalSelections = editor.getSelections();\n\t\tlet selections = originalSelections;\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\t// Apply to whole document.\n\t\t\tselections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst resultingSelections: Selection[] = [];\n\n\t\tfor (let i = 0; i < selections.length; i++) {\n\t\t\tconst selection = selections[i];\n\t\t\tconst originalSelection = originalSelections[i];\n\t\t\tlet endLineNumber = selection.endLineNumber;\n\t\t\tif (selection.startLineNumber < selection.endLineNumber && selection.endColumn === 1) {\n\t\t\t\tendLineNumber--;\n\t\t\t}\n\n\t\t\tlet range: Range = new Range(selection.startLineNumber, 1, endLineNumber, model.getLineMaxColumn(endLineNumber));\n\n\t\t\t// Exclude last line if empty and we're at the end of the document\n\t\t\tif (endLineNumber === model.getLineCount() && model.getLineContent(range.endLineNumber) === '') {\n\t\t\t\trange = range.setEndPosition(range.endLineNumber - 1, model.getLineMaxColumn(range.endLineNumber - 1));\n\t\t\t}\n\n\t\t\tconst lines: string[] = [];\n\t\t\tfor (let i = range.endLineNumber; i >= range.startLineNumber; i--) {\n\t\t\t\tlines.push(model.getLineContent(i));\n\t\t\t}\n\t\t\tconst edit: ISingleEditOperation = EditOperation.replace(range, lines.join('\\n'));\n\t\t\tedits.push(edit);\n\n\t\t\tconst updateLineNumber = function (lineNumber: number): number {\n\t\t\t\treturn lineNumber <= range.endLineNumber ? range.endLineNumber - lineNumber + range.startLineNumber : lineNumber;\n\t\t\t};\n\t\t\tconst updateSelection = function (sel: Selection): Selection {\n\t\t\t\tif (sel.isEmpty()) {\n\t\t\t\t\t// keep just the cursor\n\t\t\t\t\treturn new Selection(updateLineNumber(sel.positionLineNumber), sel.positionColumn, updateLineNumber(sel.positionLineNumber), sel.positionColumn);\n\t\t\t\t} else {\n\t\t\t\t\t// keep selection - maintain direction by creating backward selection\n\t\t\t\t\tconst newSelectionStart = updateLineNumber(sel.selectionStartLineNumber);\n\t\t\t\t\tconst newPosition = updateLineNumber(sel.positionLineNumber);\n\t\t\t\t\tconst newSelectionStartColumn = sel.selectionStartColumn;\n\t\t\t\t\tconst newPositionColumn = sel.positionColumn;\n\n\t\t\t\t\t// Create selection: from (newSelectionStart, newSelectionStartColumn) to (newPosition, newPositionColumn)\n\t\t\t\t\t// After reversal: from (3, 2) to (1, 3)\n\t\t\t\t\treturn new Selection(newSelectionStart, newSelectionStartColumn, newPosition, newPositionColumn);\n\t\t\t\t}\n\t\t\t};\n\t\t\tresultingSelections.push(updateSelection(originalSelection));\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, resultingSelections);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class TrimTrailingWhitespaceAction extends EditorAction {\n\n\tpublic static readonly ID = 'editor.action.trimTrailingWhitespace';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: TrimTrailingWhitespaceAction.ID,\n\t\t\tlabel: nls.localize2('lines.trimTrailingWhitespace', \"Trim Trailing Whitespace\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyX),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {\n\n\t\tlet cursors: Position[] = [];\n\t\tif (args.reason === 'auto-save') {\n\t\t\t// See https://github.com/editorconfig/editorconfig-vscode/issues/47\n\t\t\t// It is very convenient for the editor config extension to invoke this action.\n\t\t\t// So, if we get a reason:'auto-save' passed in, let's preserve cursor positions.\n\t\t\tcursors = (editor.getSelections() || []).map(s => new Position(s.positionLineNumber, s.positionColumn));\n\t\t}\n\n\t\tconst selection = editor.getSelection();\n\t\tif (selection === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = _accessor.get(IConfigurationService);\n\t\tconst model = editor.getModel();\n\t\tconst trimInRegexAndStrings = config.getValue<boolean>('files.trimTrailingWhitespaceInRegexAndStrings', { overrideIdentifier: model?.getLanguageId(), resource: model?.uri });\n\n\t\tconst command = new TrimTrailingWhitespaceCommand(selection, cursors, trimInRegexAndStrings);\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, [command]);\n\t\teditor.pushUndoStop();\n\t}\n}\n\n// delete lines\n\ninterface IDeleteLinesOperation {\n\tstartLineNumber: number;\n\tendLineNumber: number;\n\tpositionColumn: number;\n}\n\nexport class DeleteLinesAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.deleteLines',\n\t\t\tlabel: nls.localize2('lines.delete', \"Delete Line\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyK,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ops = this._getLinesToRemove(editor);\n\n\t\tconst model: ITextModel = editor.getModel();\n\t\tif (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n\t\t\t// Model is empty\n\t\t\treturn;\n\t\t}\n\n\t\tlet linesDeleted = 0;\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst cursorState: Selection[] = [];\n\t\tfor (let i = 0, len = ops.length; i < len; i++) {\n\t\t\tconst op = ops[i];\n\n\t\t\tlet startLineNumber = op.startLineNumber;\n\t\t\tlet endLineNumber = op.endLineNumber;\n\n\t\t\tlet startColumn = 1;\n\t\t\tlet endColumn = model.getLineMaxColumn(endLineNumber);\n\t\t\tif (endLineNumber < model.getLineCount()) {\n\t\t\t\tendLineNumber += 1;\n\t\t\t\tendColumn = 1;\n\t\t\t} else if (startLineNumber > 1) {\n\t\t\t\tstartLineNumber -= 1;\n\t\t\t\tstartColumn = model.getLineMaxColumn(startLineNumber);\n\t\t\t}\n\n\t\t\tedits.push(EditOperation.replace(new Selection(startLineNumber, startColumn, endLineNumber, endColumn), ''));\n\t\t\tcursorState.push(new Selection(startLineNumber - linesDeleted, op.positionColumn, startLineNumber - linesDeleted, op.positionColumn));\n\t\t\tlinesDeleted += (op.endLineNumber - op.startLineNumber + 1);\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, cursorState);\n\t\teditor.pushUndoStop();\n\t}\n\n\tprivate _getLinesToRemove(editor: IActiveCodeEditor): IDeleteLinesOperation[] {\n\t\t// Construct delete operations\n\t\tconst operations: IDeleteLinesOperation[] = editor.getSelections().map((s) => {\n\n\t\t\tlet endLineNumber = s.endLineNumber;\n\t\t\tif (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n\t\t\t\tendLineNumber -= 1;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tstartLineNumber: s.startLineNumber,\n\t\t\t\tselectionStartColumn: s.selectionStartColumn,\n\t\t\t\tendLineNumber: endLineNumber,\n\t\t\t\tpositionColumn: s.positionColumn\n\t\t\t};\n\t\t});\n\n\t\t// Sort delete operations\n\t\toperations.sort((a, b) => {\n\t\t\tif (a.startLineNumber === b.startLineNumber) {\n\t\t\t\treturn a.endLineNumber - b.endLineNumber;\n\t\t\t}\n\t\t\treturn a.startLineNumber - b.startLineNumber;\n\t\t});\n\n\t\t// Merge delete operations which are adjacent or overlapping\n\t\tconst mergedOperations: IDeleteLinesOperation[] = [];\n\t\tlet previousOperation = operations[0];\n\t\tfor (let i = 1; i < operations.length; i++) {\n\t\t\tif (previousOperation.endLineNumber + 1 >= operations[i].startLineNumber) {\n\t\t\t\t// Merge current operations into the previous one\n\t\t\t\tpreviousOperation.endLineNumber = operations[i].endLineNumber;\n\t\t\t} else {\n\t\t\t\t// Push previous operation\n\t\t\t\tmergedOperations.push(previousOperation);\n\t\t\t\tpreviousOperation = operations[i];\n\t\t\t}\n\t\t}\n\t\t// Push the last operation\n\t\tmergedOperations.push(previousOperation);\n\n\t\treturn mergedOperations;\n\t}\n}\n\nexport class IndentLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.indentLines',\n\t\t\tlabel: nls.localize2('lines.indent', \"Indent Line\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.BracketRight,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\treturn;\n\t\t}\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, TypeOperations.indent(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n\t\teditor.pushUndoStop();\n\t}\n}\n\nclass OutdentLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.outdentLines',\n\t\t\tlabel: nls.localize2('lines.outdent', \"Outdent Line\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.BracketLeft,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tCoreEditingCommands.Outdent.runEditorCommand(_accessor, editor, null);\n\t}\n}\n\nexport class InsertLineBeforeAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertLineBefore',\n\t\t\tlabel: nls.localize2('lines.insertBefore', \"Insert Line Above\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Enter,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\treturn;\n\t\t}\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, EnterOperation.lineInsertBefore(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n\t}\n}\n\nexport class InsertLineAfterAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertLineAfter',\n\t\t\tlabel: nls.localize2('lines.insertAfter', \"Insert Line Below\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Enter,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\treturn;\n\t\t}\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, EnterOperation.lineInsertAfter(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n\t}\n}\n\nexport abstract class AbstractDeleteAllToBoundaryAction extends EditorAction {\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst primaryCursor = editor.getSelection();\n\n\t\tconst rangesToDelete = this._getRangesToDelete(editor);\n\t\t// merge overlapping selections\n\t\tconst effectiveRanges: Range[] = [];\n\n\t\tfor (let i = 0, count = rangesToDelete.length - 1; i < count; i++) {\n\t\t\tconst range = rangesToDelete[i];\n\t\t\tconst nextRange = rangesToDelete[i + 1];\n\n\t\t\tif (Range.intersectRanges(range, nextRange) === null) {\n\t\t\t\teffectiveRanges.push(range);\n\t\t\t} else {\n\t\t\t\trangesToDelete[i + 1] = Range.plusRange(range, nextRange);\n\t\t\t}\n\t\t}\n\n\t\teffectiveRanges.push(rangesToDelete[rangesToDelete.length - 1]);\n\n\t\tconst endCursorState = this._getEndCursorState(primaryCursor, effectiveRanges);\n\n\t\tconst edits: ISingleEditOperation[] = effectiveRanges.map(range => {\n\t\t\treturn EditOperation.replace(range, '');\n\t\t});\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, endCursorState);\n\t\teditor.pushUndoStop();\n\t}\n\n\t/**\n\t * Compute the cursor state after the edit operations were applied.\n\t */\n\tprotected abstract _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[];\n\n\tprotected abstract _getRangesToDelete(editor: IActiveCodeEditor): Range[];\n}\n\nexport class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'deleteAllLeft',\n\t\t\tlabel: nls.localize2('lines.deleteAllLeft', \"Delete All Left\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.Backspace },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[] {\n\t\tlet endPrimaryCursor: Selection | null = null;\n\t\tconst endCursorState: Selection[] = [];\n\t\tlet deletedLines = 0;\n\n\t\trangesToDelete.forEach(range => {\n\t\t\tlet endCursor;\n\t\t\tif (range.endColumn === 1 && deletedLines > 0) {\n\t\t\t\tconst newStartLine = range.startLineNumber - deletedLines;\n\t\t\t\tendCursor = new Selection(newStartLine, range.startColumn, newStartLine, range.startColumn);\n\t\t\t} else {\n\t\t\t\tendCursor = new Selection(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\n\t\t\t}\n\n\t\t\tdeletedLines += range.endLineNumber - range.startLineNumber;\n\n\t\t\tif (range.intersectRanges(primaryCursor)) {\n\t\t\t\tendPrimaryCursor = endCursor;\n\t\t\t} else {\n\t\t\t\tendCursorState.push(endCursor);\n\t\t\t}\n\t\t});\n\n\t\tif (endPrimaryCursor) {\n\t\t\tendCursorState.unshift(endPrimaryCursor);\n\t\t}\n\n\t\treturn endCursorState;\n\t}\n\n\tprotected _getRangesToDelete(editor: IActiveCodeEditor): Range[] {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet rangesToDelete: Range[] = selections;\n\t\tconst model = editor.getModel();\n\n\t\tif (model === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\trangesToDelete.sort(Range.compareRangesUsingStarts);\n\t\trangesToDelete = rangesToDelete.map(selection => {\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\tif (selection.startColumn === 1) {\n\t\t\t\t\tconst deleteFromLine = Math.max(1, selection.startLineNumber - 1);\n\t\t\t\t\tconst deleteFromColumn = selection.startLineNumber === 1 ? 1 : model.getLineLength(deleteFromLine) + 1;\n\t\t\t\t\treturn new Range(deleteFromLine, deleteFromColumn, selection.startLineNumber, 1);\n\t\t\t\t} else {\n\t\t\t\t\treturn new Range(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn new Range(selection.startLineNumber, 1, selection.endLineNumber, selection.endColumn);\n\t\t\t}\n\t\t});\n\n\t\treturn rangesToDelete;\n\t}\n}\n\nexport class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'deleteAllRight',\n\t\t\tlabel: nls.localize2('lines.deleteAllRight', \"Delete All Right\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyK, secondary: [KeyMod.CtrlCmd | KeyCode.Delete] },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[] {\n\t\tlet endPrimaryCursor: Selection | null = null;\n\t\tconst endCursorState: Selection[] = [];\n\t\tfor (let i = 0, len = rangesToDelete.length, offset = 0; i < len; i++) {\n\t\t\tconst range = rangesToDelete[i];\n\t\t\tconst endCursor = new Selection(range.startLineNumber - offset, range.startColumn, range.startLineNumber - offset, range.startColumn);\n\n\t\t\tif (range.intersectRanges(primaryCursor)) {\n\t\t\t\tendPrimaryCursor = endCursor;\n\t\t\t} else {\n\t\t\t\tendCursorState.push(endCursor);\n\t\t\t}\n\t\t}\n\n\t\tif (endPrimaryCursor) {\n\t\t\tendCursorState.unshift(endPrimaryCursor);\n\t\t}\n\n\t\treturn endCursorState;\n\t}\n\n\tprotected _getRangesToDelete(editor: IActiveCodeEditor): Range[] {\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\n\t\tif (selections === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst rangesToDelete: Range[] = selections.map((sel) => {\n\t\t\tif (sel.isEmpty()) {\n\t\t\t\tconst maxColumn = model.getLineMaxColumn(sel.startLineNumber);\n\n\t\t\t\tif (sel.startColumn === maxColumn) {\n\t\t\t\t\treturn new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1);\n\t\t\t\t} else {\n\t\t\t\t\treturn new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn sel;\n\t\t});\n\n\t\trangesToDelete.sort(Range.compareRangesUsingStarts);\n\t\treturn rangesToDelete;\n\t}\n}\n\nexport class JoinLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.joinLines',\n\t\t\tlabel: nls.localize2('lines.joinLines', \"Join Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyJ },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet primaryCursor = editor.getSelection();\n\t\tif (primaryCursor === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tselections.sort(Range.compareRangesUsingStarts);\n\t\tconst reducedSelections: Selection[] = [];\n\n\t\tconst lastSelection = selections.reduce((previousValue, currentValue) => {\n\t\t\tif (previousValue.isEmpty()) {\n\t\t\t\tif (previousValue.endLineNumber === currentValue.startLineNumber) {\n\t\t\t\t\tif (primaryCursor!.equalsSelection(previousValue)) {\n\t\t\t\t\t\tprimaryCursor = currentValue;\n\t\t\t\t\t}\n\t\t\t\t\treturn currentValue;\n\t\t\t\t}\n\n\t\t\t\tif (currentValue.startLineNumber > previousValue.endLineNumber + 1) {\n\t\t\t\t\treducedSelections.push(previousValue);\n\t\t\t\t\treturn currentValue;\n\t\t\t\t} else {\n\t\t\t\t\treturn new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (currentValue.startLineNumber > previousValue.endLineNumber) {\n\t\t\t\t\treducedSelections.push(previousValue);\n\t\t\t\t\treturn currentValue;\n\t\t\t\t} else {\n\t\t\t\t\treturn new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treducedSelections.push(lastSelection);\n\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst endCursorState: Selection[] = [];\n\t\tlet endPrimaryCursor = primaryCursor;\n\t\tlet lineOffset = 0;\n\n\t\tfor (let i = 0, len = reducedSelections.length; i < len; i++) {\n\t\t\tconst selection = reducedSelections[i];\n\t\t\tconst startLineNumber = selection.startLineNumber;\n\t\t\tconst startColumn = 1;\n\t\t\tlet columnDeltaOffset = 0;\n\t\t\tlet endLineNumber: number,\n\t\t\t\tendColumn: number;\n\n\t\t\tconst selectionEndPositionOffset = model.getLineLength(selection.endLineNumber) - selection.endColumn;\n\n\t\t\tif (selection.isEmpty() || selection.startLineNumber === selection.endLineNumber) {\n\t\t\t\tconst position = selection.getStartPosition();\n\t\t\t\tif (position.lineNumber < model.getLineCount()) {\n\t\t\t\t\tendLineNumber = startLineNumber + 1;\n\t\t\t\t\tendColumn = model.getLineMaxColumn(endLineNumber);\n\t\t\t\t} else {\n\t\t\t\t\tendLineNumber = position.lineNumber;\n\t\t\t\t\tendColumn = model.getLineMaxColumn(position.lineNumber);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tendLineNumber = selection.endLineNumber;\n\t\t\t\tendColumn = model.getLineMaxColumn(endLineNumber);\n\t\t\t}\n\n\t\t\tlet trimmedLinesContent = model.getLineContent(startLineNumber);\n\n\t\t\tfor (let i = startLineNumber + 1; i <= endLineNumber; i++) {\n\t\t\t\tconst lineText = model.getLineContent(i);\n\t\t\t\tconst firstNonWhitespaceIdx = model.getLineFirstNonWhitespaceColumn(i);\n\n\t\t\t\tif (firstNonWhitespaceIdx >= 1) {\n\t\t\t\t\tlet insertSpace = true;\n\t\t\t\t\tif (trimmedLinesContent === '') {\n\t\t\t\t\t\tinsertSpace = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (insertSpace && (trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === ' ' ||\n\t\t\t\t\t\ttrimmedLinesContent.charAt(trimmedLinesContent.length - 1) === '\\t')) {\n\t\t\t\t\t\tinsertSpace = false;\n\t\t\t\t\t\ttrimmedLinesContent = trimmedLinesContent.replace(/[\\s\\uFEFF\\xA0]+$/g, ' ');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst lineTextWithoutIndent = lineText.substr(firstNonWhitespaceIdx - 1);\n\n\t\t\t\t\ttrimmedLinesContent += (insertSpace ? ' ' : '') + lineTextWithoutIndent;\n\n\t\t\t\t\tif (insertSpace) {\n\t\t\t\t\t\tcolumnDeltaOffset = lineTextWithoutIndent.length + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnDeltaOffset = lineTextWithoutIndent.length;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcolumnDeltaOffset = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst deleteSelection = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n\n\t\t\tif (!deleteSelection.isEmpty()) {\n\t\t\t\tlet resultSelection: Selection;\n\n\t\t\t\tif (selection.isEmpty()) {\n\t\t\t\t\tedits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n\t\t\t\t\tresultSelection = new Selection(deleteSelection.startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1, startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1);\n\t\t\t\t} else {\n\t\t\t\t\tif (selection.startLineNumber === selection.endLineNumber) {\n\t\t\t\t\t\tedits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n\t\t\t\t\t\tresultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn,\n\t\t\t\t\t\t\tselection.endLineNumber - lineOffset, selection.endColumn);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tedits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n\t\t\t\t\t\tresultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn,\n\t\t\t\t\t\t\tselection.startLineNumber - lineOffset, trimmedLinesContent.length - selectionEndPositionOffset);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (Range.intersectRanges(deleteSelection, primaryCursor) !== null) {\n\t\t\t\t\tendPrimaryCursor = resultSelection;\n\t\t\t\t} else {\n\t\t\t\t\tendCursorState.push(resultSelection);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlineOffset += deleteSelection.endLineNumber - deleteSelection.startLineNumber;\n\t\t}\n\n\t\tendCursorState.unshift(endPrimaryCursor);\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, endCursorState);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class TransposeAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transpose',\n\t\t\tlabel: nls.localize2('editor.transpose', \"Transpose Characters around the Cursor\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\n\t\tfor (let i = 0, len = selections.length; i < len; i++) {\n\t\t\tconst selection = selections[i];\n\n\t\t\tif (!selection.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst cursor = selection.getStartPosition();\n\t\t\tconst maxColumn = model.getLineMaxColumn(cursor.lineNumber);\n\n\t\t\tif (cursor.column >= maxColumn) {\n\t\t\t\tif (cursor.lineNumber === model.getLineCount()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// The cursor is at the end of current line and current line is not empty\n\t\t\t\t// then we transpose the character before the cursor and the line break if there is any following line.\n\t\t\t\tconst deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1);\n\t\t\t\tconst chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n\n\t\t\t\tcommands.push(new ReplaceCommand(new Selection(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1), chars));\n\t\t\t} else {\n\t\t\t\tconst deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber, cursor.column + 1);\n\t\t\t\tconst chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n\t\t\t\tcommands.push(new ReplaceCommandThatPreservesSelection(deleteSelection, chars,\n\t\t\t\t\tnew Selection(cursor.lineNumber, cursor.column + 1, cursor.lineNumber, cursor.column + 1)));\n\t\t\t}\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport abstract class AbstractCaseAction extends EditorAction {\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst wordSeparators = editor.getOption(EditorOption.wordSeparators);\n\t\tconst textEdits: ISingleEditOperation[] = [];\n\n\t\tfor (const selection of selections) {\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\tconst cursor = selection.getStartPosition();\n\t\t\t\tconst word = editor.getConfiguredWordAtPosition(cursor);\n\n\t\t\t\tif (!word) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst wordRange = new Range(cursor.lineNumber, word.startColumn, cursor.lineNumber, word.endColumn);\n\t\t\t\tconst text = model.getValueInRange(wordRange);\n\t\t\t\ttextEdits.push(EditOperation.replace(wordRange, this._modifyText(text, wordSeparators)));\n\t\t\t} else {\n\t\t\t\tconst text = model.getValueInRange(selection);\n\t\t\t\ttextEdits.push(EditOperation.replace(selection, this._modifyText(text, wordSeparators)));\n\t\t\t}\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, textEdits);\n\t\teditor.pushUndoStop();\n\t}\n\n\tprotected abstract _modifyText(text: string, wordSeparators: string): string;\n}\n\nexport class UpperCaseAction extends AbstractCaseAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToUppercase',\n\t\t\tlabel: nls.localize2('editor.transformToUppercase', \"Transform to Uppercase\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\treturn text.toLocaleUpperCase();\n\t}\n}\n\nexport class LowerCaseAction extends AbstractCaseAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToLowercase',\n\t\t\tlabel: nls.localize2('editor.transformToLowercase', \"Transform to Lowercase\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\treturn text.toLocaleLowerCase();\n\t}\n}\n\nclass BackwardsCompatibleRegExp {\n\n\tprivate _actual: RegExp | null;\n\tprivate _evaluated: boolean;\n\n\tconstructor(\n\t\tprivate readonly _pattern: string,\n\t\tprivate readonly _flags: string\n\t) {\n\t\tthis._actual = null;\n\t\tthis._evaluated = false;\n\t}\n\n\tpublic get(): RegExp | null {\n\t\tif (!this._evaluated) {\n\t\t\tthis._evaluated = true;\n\t\t\ttry {\n\t\t\t\tthis._actual = new RegExp(this._pattern, this._flags);\n\t\t\t} catch (err) {\n\t\t\t\t// this browser does not support this regular expression\n\t\t\t}\n\t\t}\n\t\treturn this._actual;\n\t}\n\n\tpublic isSupported(): boolean {\n\t\treturn (this.get() !== null);\n\t}\n}\n\nexport class TitleCaseAction extends AbstractCaseAction {\n\n\tpublic static titleBoundary = new BackwardsCompatibleRegExp('(^|[^\\\\p{L}\\\\p{N}\\']|((^|\\\\P{L})\\'))\\\\p{L}', 'gmu');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToTitlecase',\n\t\t\tlabel: nls.localize2('editor.transformToTitlecase', \"Transform to Title Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst titleBoundary = TitleCaseAction.titleBoundary.get();\n\t\tif (!titleBoundary) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\t\treturn text\n\t\t\t.toLocaleLowerCase()\n\t\t\t.replace(titleBoundary, (b) => b.toLocaleUpperCase());\n\t}\n}\n\nexport class SnakeCaseAction extends AbstractCaseAction {\n\n\tpublic static caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\n\tpublic static singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu})(\\\\p{Ll})', 'gmu');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToSnakecase',\n\t\t\tlabel: nls.localize2('editor.transformToSnakecase', \"Transform to Snake Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst caseBoundary = SnakeCaseAction.caseBoundary.get();\n\t\tconst singleLetters = SnakeCaseAction.singleLetters.get();\n\t\tif (!caseBoundary || !singleLetters) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\t\treturn (text\n\t\t\t.replace(caseBoundary, '$1_$2')\n\t\t\t.replace(singleLetters, '$1_$2$3')\n\t\t\t.toLocaleLowerCase()\n\t\t);\n\t}\n}\n\nexport class CamelCaseAction extends AbstractCaseAction {\n\tpublic static wordBoundary = new BackwardsCompatibleRegExp('[_\\\\s-]', 'gm');\n\tpublic static validWordStart = new BackwardsCompatibleRegExp('^(\\\\p{Lu}[^\\\\p{Lu}])', 'gmu');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToCamelcase',\n\t\t\tlabel: nls.localize2('editor.transformToCamelcase', \"Transform to Camel Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst wordBoundary = CamelCaseAction.wordBoundary.get();\n\t\tconst validWordStart = CamelCaseAction.validWordStart.get();\n\t\tif (!wordBoundary || !validWordStart) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\t\tconst words = text.split(wordBoundary);\n\t\tconst firstWord = words.shift()?.replace(validWordStart, (start: string) => start.toLocaleLowerCase());\n\t\treturn firstWord + words.map((word: string) => word.substring(0, 1).toLocaleUpperCase() + word.substring(1))\n\t\t\t.join('');\n\t}\n}\n\nexport class PascalCaseAction extends AbstractCaseAction {\n\tpublic static wordBoundary = new BackwardsCompatibleRegExp('[_\\\\s-]', 'gm');\n\tpublic static wordBoundaryToMaintain = new BackwardsCompatibleRegExp('(?<=\\\\.)', 'gm');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToPascalcase',\n\t\t\tlabel: nls.localize2('editor.transformToPascalcase', \"Transform to Pascal Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst wordBoundary = PascalCaseAction.wordBoundary.get();\n\t\tconst wordBoundaryToMaintain = PascalCaseAction.wordBoundaryToMaintain.get();\n\n\t\tif (!wordBoundary || !wordBoundaryToMaintain) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\n\t\tconst wordsWithMaintainBoundaries = text.split(wordBoundaryToMaintain);\n\t\tconst words = wordsWithMaintainBoundaries.map((word: string) => word.split(wordBoundary)).flat();\n\t\treturn words.map((word: string) => word.substring(0, 1).toLocaleUpperCase() + word.substring(1))\n\t\t\t.join('');\n\t}\n}\n\nexport class KebabCaseAction extends AbstractCaseAction {\n\n\tpublic static isSupported(): boolean {\n\t\tconst areAllRegexpsSupported = [\n\t\t\tthis.caseBoundary,\n\t\t\tthis.singleLetters,\n\t\t\tthis.underscoreBoundary,\n\t\t].every((regexp) => regexp.isSupported());\n\n\t\treturn areAllRegexpsSupported;\n\t}\n\n\tprivate static caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\n\tprivate static singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu}\\\\p{Ll})', 'gmu');\n\tprivate static underscoreBoundary = new BackwardsCompatibleRegExp('(\\\\S)(_)(\\\\S)', 'gm');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToKebabcase',\n\t\t\tlabel: nls.localize2('editor.transformToKebabcase', 'Transform to Kebab Case'),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, _: string): string {\n\t\tconst caseBoundary = KebabCaseAction.caseBoundary.get();\n\t\tconst singleLetters = KebabCaseAction.singleLetters.get();\n\t\tconst underscoreBoundary = KebabCaseAction.underscoreBoundary.get();\n\n\t\tif (!caseBoundary || !singleLetters || !underscoreBoundary) {\n\t\t\t// one or more regexps aren't supported\n\t\t\treturn text;\n\t\t}\n\n\t\treturn text\n\t\t\t.replace(underscoreBoundary, '$1-$3')\n\t\t\t.replace(caseBoundary, '$1-$2')\n\t\t\t.replace(singleLetters, '$1-$2')\n\t\t\t.toLocaleLowerCase();\n\t}\n}\n\nregisterEditorAction(CopyLinesUpAction);\nregisterEditorAction(CopyLinesDownAction);\nregisterEditorAction(DuplicateSelectionAction);\nregisterEditorAction(MoveLinesUpAction);\nregisterEditorAction(MoveLinesDownAction);\nregisterEditorAction(SortLinesAscendingAction);\nregisterEditorAction(SortLinesDescendingAction);\nregisterEditorAction(DeleteDuplicateLinesAction);\nregisterEditorAction(TrimTrailingWhitespaceAction);\nregisterEditorAction(DeleteLinesAction);\nregisterEditorAction(IndentLinesAction);\nregisterEditorAction(OutdentLinesAction);\nregisterEditorAction(InsertLineBeforeAction);\nregisterEditorAction(InsertLineAfterAction);\nregisterEditorAction(DeleteAllLeftAction);\nregisterEditorAction(DeleteAllRightAction);\nregisterEditorAction(JoinLinesAction);\nregisterEditorAction(TransposeAction);\nregisterEditorAction(UpperCaseAction);\nregisterEditorAction(LowerCaseAction);\nregisterEditorAction(ReverseLinesAction);\n\nif (SnakeCaseAction.caseBoundary.isSupported() && SnakeCaseAction.singleLetters.isSupported()) {\n\tregisterEditorAction(SnakeCaseAction);\n}\nif (CamelCaseAction.wordBoundary.isSupported()) {\n\tregisterEditorAction(CamelCaseAction);\n}\nif (PascalCaseAction.wordBoundary.isSupported()) {\n\tregisterEditorAction(PascalCaseAction);\n}\nif (TitleCaseAction.titleBoundary.isSupported()) {\n\tregisterEditorAction(TitleCaseAction);\n}\n\nif (KebabCaseAction.isSupported()) {\n\tregisterEditorAction(KebabCaseAction);\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/linesOperations/browser/linesOperations.ts"],"names":[],"mappings":"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","file":"linesOperations.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 { KeyChord, KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { CoreEditingCommands } from '../../../browser/coreCommands.js';\nimport { IActiveCodeEditor, ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, IActionOptions, registerEditorAction, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { ReplaceCommand, ReplaceCommandThatPreservesSelection, ReplaceCommandThatSelectsText } from '../../../common/commands/replaceCommand.js';\nimport { TrimTrailingWhitespaceCommand } from '../../../common/commands/trimTrailingWhitespaceCommand.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { TypeOperations } from '../../../common/cursor/cursorTypeOperations.js';\nimport { EnterOperation } from '../../../common/cursor/cursorTypeEditOperations.js';\nimport { EditOperation, ISingleEditOperation } from '../../../common/core/editOperation.js';\nimport { Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { Selection } from '../../../common/core/selection.js';\nimport { ICommand } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { CopyLinesCommand } from './copyLinesCommand.js';\nimport { MoveLinesCommand } from './moveLinesCommand.js';\nimport { SortLinesCommand } from './sortLinesCommand.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\n// copy lines\n\nabstract class AbstractCopyLinesAction extends EditorAction {\n\n\tprivate readonly down: boolean;\n\n\tconstructor(down: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t\tthis.down = down;\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst selections = editor.getSelections().map((selection, index) => ({ selection, index, ignore: false }));\n\t\tselections.sort((a, b) => Range.compareRangesUsingStarts(a.selection, b.selection));\n\n\t\t// Remove selections that would result in copying the same line\n\t\tlet prev = selections[0];\n\t\tfor (let i = 1; i < selections.length; i++) {\n\t\t\tconst curr = selections[i];\n\t\t\tif (prev.selection.endLineNumber === curr.selection.startLineNumber) {\n\t\t\t\t// these two selections would copy the same line\n\t\t\t\tif (prev.index < curr.index) {\n\t\t\t\t\t// prev wins\n\t\t\t\t\tcurr.ignore = true;\n\t\t\t\t} else {\n\t\t\t\t\t// curr wins\n\t\t\t\t\tprev.ignore = true;\n\t\t\t\t\tprev = curr;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\t\tfor (const selection of selections) {\n\t\t\tcommands.push(new CopyLinesCommand(selection.selection, this.down, selection.ignore));\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nclass CopyLinesUpAction extends AbstractCopyLinesAction {\n\tconstructor() {\n\t\tsuper(false, {\n\t\t\tid: 'editor.action.copyLinesUpAction',\n\t\t\tlabel: nls.localize2('lines.copyUp', \"Copy Line Up\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyMod.Shift | KeyCode.UpArrow,\n\t\t\t\tlinux: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.UpArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miCopyLinesUp', comment: ['&& denotes a mnemonic'] }, \"&&Copy Line Up\"),\n\t\t\t\torder: 1\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass CopyLinesDownAction extends AbstractCopyLinesAction {\n\tconstructor() {\n\t\tsuper(true, {\n\t\t\tid: 'editor.action.copyLinesDownAction',\n\t\t\tlabel: nls.localize2('lines.copyDown', \"Copy Line Down\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyMod.Shift | KeyCode.DownArrow,\n\t\t\t\tlinux: { primary: KeyMod.CtrlCmd | KeyMod.Alt | KeyMod.Shift | KeyCode.DownArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miCopyLinesDown', comment: ['&& denotes a mnemonic'] }, \"Co&&py Line Down\"),\n\t\t\t\torder: 2\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport class DuplicateSelectionAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.duplicateSelection',\n\t\t\tlabel: nls.localize2('duplicateSelection', \"Duplicate Selection\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miDuplicateSelection', comment: ['&& denotes a mnemonic'] }, \"&&Duplicate Selection\"),\n\t\t\t\torder: 5\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\t\tconst selections = editor.getSelections();\n\t\tconst model = editor.getModel();\n\n\t\tfor (const selection of selections) {\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\tcommands.push(new CopyLinesCommand(selection, true));\n\t\t\t} else {\n\t\t\t\tconst insertSelection = new Selection(selection.endLineNumber, selection.endColumn, selection.endLineNumber, selection.endColumn);\n\t\t\t\tcommands.push(new ReplaceCommandThatSelectsText(insertSelection, model.getValueInRange(selection)));\n\t\t\t}\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\n// move lines\n\nabstract class AbstractMoveLinesAction extends EditorAction {\n\n\tprivate readonly down: boolean;\n\n\tconstructor(down: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t\tthis.down = down;\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst languageConfigurationService = accessor.get(ILanguageConfigurationService);\n\n\t\tconst commands: ICommand[] = [];\n\t\tconst selections = editor.getSelections() || [];\n\t\tconst autoIndent = editor.getOption(EditorOption.autoIndent);\n\n\t\tfor (const selection of selections) {\n\t\t\tcommands.push(new MoveLinesCommand(selection, this.down, autoIndent, languageConfigurationService));\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nclass MoveLinesUpAction extends AbstractMoveLinesAction {\n\tconstructor() {\n\t\tsuper(false, {\n\t\t\tid: 'editor.action.moveLinesUpAction',\n\t\t\tlabel: nls.localize2('lines.moveUp', \"Move Line Up\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyCode.UpArrow,\n\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.UpArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miMoveLinesUp', comment: ['&& denotes a mnemonic'] }, \"Mo&&ve Line Up\"),\n\t\t\t\torder: 3\n\t\t\t}\n\t\t});\n\t}\n}\n\nclass MoveLinesDownAction extends AbstractMoveLinesAction {\n\tconstructor() {\n\t\tsuper(true, {\n\t\t\tid: 'editor.action.moveLinesDownAction',\n\t\t\tlabel: nls.localize2('lines.moveDown', \"Move Line Down\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.Alt | KeyCode.DownArrow,\n\t\t\t\tlinux: { primary: KeyMod.Alt | KeyCode.DownArrow },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t},\n\t\t\tmenuOpts: {\n\t\t\t\tmenuId: MenuId.MenubarSelectionMenu,\n\t\t\t\tgroup: '2_line',\n\t\t\t\ttitle: nls.localize({ key: 'miMoveLinesDown', comment: ['&& denotes a mnemonic'] }, \"Move &&Line Down\"),\n\t\t\t\torder: 4\n\t\t\t}\n\t\t});\n\t}\n}\n\nexport abstract class AbstractSortLinesAction extends EditorAction {\n\tprivate readonly descending: boolean;\n\n\tconstructor(descending: boolean, opts: IActionOptions) {\n\t\tsuper(opts);\n\t\tthis.descending = descending;\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tlet selections = editor.getSelections();\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\t// Apply to whole document.\n\t\t\tselections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n\t\t}\n\n\t\tfor (const selection of selections) {\n\t\t\tif (!SortLinesCommand.canRun(editor.getModel(), selection, this.descending)) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\t\tfor (let i = 0, len = selections.length; i < len; i++) {\n\t\t\tcommands[i] = new SortLinesCommand(selections[i], this.descending);\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class SortLinesAscendingAction extends AbstractSortLinesAction {\n\tconstructor() {\n\t\tsuper(false, {\n\t\t\tid: 'editor.action.sortLinesAscending',\n\t\t\tlabel: nls.localize2('lines.sortAscending', \"Sort Lines Ascending\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n}\n\nexport class SortLinesDescendingAction extends AbstractSortLinesAction {\n\tconstructor() {\n\t\tsuper(true, {\n\t\t\tid: 'editor.action.sortLinesDescending',\n\t\t\tlabel: nls.localize2('lines.sortDescending', \"Sort Lines Descending\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n}\n\nexport class DeleteDuplicateLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.removeDuplicateLines',\n\t\t\tlabel: nls.localize2('lines.deleteDuplicates', \"Delete Duplicate Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model: ITextModel = editor.getModel();\n\t\tif (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst endCursorState: Selection[] = [];\n\n\t\tlet linesDeleted = 0;\n\t\tlet updateSelection = true;\n\n\t\tlet selections = editor.getSelections();\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\t// Apply to whole document.\n\t\t\tselections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n\t\t\tupdateSelection = false;\n\t\t}\n\n\t\tfor (const selection of selections) {\n\t\t\tconst uniqueLines = new Set();\n\t\t\tconst lines = [];\n\n\t\t\tfor (let i = selection.startLineNumber; i <= selection.endLineNumber; i++) {\n\t\t\t\tconst line = model.getLineContent(i);\n\n\t\t\t\tif (uniqueLines.has(line)) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tlines.push(line);\n\t\t\t\tuniqueLines.add(line);\n\t\t\t}\n\n\n\t\t\tconst selectionToReplace = new Selection(\n\t\t\t\tselection.startLineNumber,\n\t\t\t\t1,\n\t\t\t\tselection.endLineNumber,\n\t\t\t\tmodel.getLineMaxColumn(selection.endLineNumber)\n\t\t\t);\n\n\t\t\tconst adjustedSelectionStart = selection.startLineNumber - linesDeleted;\n\t\t\tconst finalSelection = new Selection(\n\t\t\t\tadjustedSelectionStart,\n\t\t\t\t1,\n\t\t\t\tadjustedSelectionStart + lines.length - 1,\n\t\t\t\tlines[lines.length - 1].length\n\t\t\t);\n\n\t\t\tedits.push(EditOperation.replace(selectionToReplace, lines.join('\\n')));\n\t\t\tendCursorState.push(finalSelection);\n\n\t\t\tlinesDeleted += (selection.endLineNumber - selection.startLineNumber + 1) - lines.length;\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, updateSelection ? endCursorState : undefined);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class ReverseLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.reverseLines',\n\t\t\tlabel: nls.localize2('lines.reverseLines', \"Reverse lines\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model: ITextModel = editor.getModel();\n\t\tconst originalSelections = editor.getSelections();\n\t\tlet selections = originalSelections;\n\t\tif (selections.length === 1 && selections[0].isEmpty()) {\n\t\t\t// Apply to whole document.\n\t\t\tselections = [new Selection(1, 1, model.getLineCount(), model.getLineMaxColumn(model.getLineCount()))];\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst resultingSelections: Selection[] = [];\n\n\t\tfor (let i = 0; i < selections.length; i++) {\n\t\t\tconst selection = selections[i];\n\t\t\tconst originalSelection = originalSelections[i];\n\t\t\tlet endLineNumber = selection.endLineNumber;\n\t\t\tif (selection.startLineNumber < selection.endLineNumber && selection.endColumn === 1) {\n\t\t\t\tendLineNumber--;\n\t\t\t}\n\n\t\t\tlet range: Range = new Range(selection.startLineNumber, 1, endLineNumber, model.getLineMaxColumn(endLineNumber));\n\n\t\t\t// Exclude last line if empty and we're at the end of the document\n\t\t\tif (endLineNumber === model.getLineCount() && model.getLineContent(range.endLineNumber) === '') {\n\t\t\t\trange = range.setEndPosition(range.endLineNumber - 1, model.getLineMaxColumn(range.endLineNumber - 1));\n\t\t\t}\n\n\t\t\tconst lines: string[] = [];\n\t\t\tfor (let i = range.endLineNumber; i >= range.startLineNumber; i--) {\n\t\t\t\tlines.push(model.getLineContent(i));\n\t\t\t}\n\t\t\tconst edit: ISingleEditOperation = EditOperation.replace(range, lines.join('\\n'));\n\t\t\tedits.push(edit);\n\n\t\t\tconst updateLineNumber = function (lineNumber: number): number {\n\t\t\t\treturn lineNumber <= range.endLineNumber ? range.endLineNumber - lineNumber + range.startLineNumber : lineNumber;\n\t\t\t};\n\t\t\tconst updateSelection = function (sel: Selection): Selection {\n\t\t\t\tif (sel.isEmpty()) {\n\t\t\t\t\t// keep just the cursor\n\t\t\t\t\treturn new Selection(updateLineNumber(sel.positionLineNumber), sel.positionColumn, updateLineNumber(sel.positionLineNumber), sel.positionColumn);\n\t\t\t\t} else {\n\t\t\t\t\t// keep selection - maintain direction by creating backward selection\n\t\t\t\t\tconst newSelectionStart = updateLineNumber(sel.selectionStartLineNumber);\n\t\t\t\t\tconst newPosition = updateLineNumber(sel.positionLineNumber);\n\t\t\t\t\tconst newSelectionStartColumn = sel.selectionStartColumn;\n\t\t\t\t\tconst newPositionColumn = sel.positionColumn;\n\n\t\t\t\t\t// Create selection: from (newSelectionStart, newSelectionStartColumn) to (newPosition, newPositionColumn)\n\t\t\t\t\t// After reversal: from (3, 2) to (1, 3)\n\t\t\t\t\treturn new Selection(newSelectionStart, newSelectionStartColumn, newPosition, newPositionColumn);\n\t\t\t\t}\n\t\t\t};\n\t\t\tresultingSelections.push(updateSelection(originalSelection));\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, resultingSelections);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class TrimTrailingWhitespaceAction extends EditorAction {\n\n\tpublic static readonly ID = 'editor.action.trimTrailingWhitespace';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: TrimTrailingWhitespaceAction.ID,\n\t\t\tlabel: nls.localize2('lines.trimTrailingWhitespace', \"Trim Trailing Whitespace\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyChord(KeyMod.CtrlCmd | KeyCode.KeyK, KeyMod.CtrlCmd | KeyCode.KeyX),\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor, args: any): void {\n\n\t\tlet cursors: Position[] = [];\n\t\tif (args.reason === 'auto-save') {\n\t\t\t// See https://github.com/editorconfig/editorconfig-vscode/issues/47\n\t\t\t// It is very convenient for the editor config extension to invoke this action.\n\t\t\t// So, if we get a reason:'auto-save' passed in, let's preserve cursor positions.\n\t\t\tcursors = (editor.getSelections() || []).map(s => new Position(s.positionLineNumber, s.positionColumn));\n\t\t}\n\n\t\tconst selection = editor.getSelection();\n\t\tif (selection === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst config = _accessor.get(IConfigurationService);\n\t\tconst model = editor.getModel();\n\t\tconst trimInRegexAndStrings = config.getValue<boolean>('files.trimTrailingWhitespaceInRegexAndStrings', { overrideIdentifier: model?.getLanguageId(), resource: model?.uri });\n\n\t\tconst command = new TrimTrailingWhitespaceCommand(selection, cursors, trimInRegexAndStrings);\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, [command]);\n\t\teditor.pushUndoStop();\n\t}\n}\n\n// delete lines\n\ninterface IDeleteLinesOperation {\n\tstartLineNumber: number;\n\tendLineNumber: number;\n\tpositionColumn: number;\n}\n\nexport class DeleteLinesAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.deleteLines',\n\t\t\tlabel: nls.localize2('lines.delete', \"Delete Line\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.KeyK,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst ops = this._getLinesToRemove(editor);\n\n\t\tconst model: ITextModel = editor.getModel();\n\t\tif (model.getLineCount() === 1 && model.getLineMaxColumn(1) === 1) {\n\t\t\t// Model is empty\n\t\t\treturn;\n\t\t}\n\n\t\tlet linesDeleted = 0;\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst cursorState: Selection[] = [];\n\t\tfor (let i = 0, len = ops.length; i < len; i++) {\n\t\t\tconst op = ops[i];\n\n\t\t\tlet startLineNumber = op.startLineNumber;\n\t\t\tlet endLineNumber = op.endLineNumber;\n\n\t\t\tlet startColumn = 1;\n\t\t\tlet endColumn = model.getLineMaxColumn(endLineNumber);\n\t\t\tif (endLineNumber < model.getLineCount()) {\n\t\t\t\tendLineNumber += 1;\n\t\t\t\tendColumn = 1;\n\t\t\t} else if (startLineNumber > 1) {\n\t\t\t\tstartLineNumber -= 1;\n\t\t\t\tstartColumn = model.getLineMaxColumn(startLineNumber);\n\t\t\t}\n\n\t\t\tedits.push(EditOperation.replace(new Selection(startLineNumber, startColumn, endLineNumber, endColumn), ''));\n\t\t\tcursorState.push(new Selection(startLineNumber - linesDeleted, op.positionColumn, startLineNumber - linesDeleted, op.positionColumn));\n\t\t\tlinesDeleted += (op.endLineNumber - op.startLineNumber + 1);\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, cursorState);\n\t\teditor.pushUndoStop();\n\t}\n\n\tprivate _getLinesToRemove(editor: IActiveCodeEditor): IDeleteLinesOperation[] {\n\t\t// Construct delete operations\n\t\tconst operations: IDeleteLinesOperation[] = editor.getSelections().map((s) => {\n\n\t\t\tlet endLineNumber = s.endLineNumber;\n\t\t\tif (s.startLineNumber < s.endLineNumber && s.endColumn === 1) {\n\t\t\t\tendLineNumber -= 1;\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tstartLineNumber: s.startLineNumber,\n\t\t\t\tselectionStartColumn: s.selectionStartColumn,\n\t\t\t\tendLineNumber: endLineNumber,\n\t\t\t\tpositionColumn: s.positionColumn\n\t\t\t};\n\t\t});\n\n\t\t// Sort delete operations\n\t\toperations.sort((a, b) => {\n\t\t\tif (a.startLineNumber === b.startLineNumber) {\n\t\t\t\treturn a.endLineNumber - b.endLineNumber;\n\t\t\t}\n\t\t\treturn a.startLineNumber - b.startLineNumber;\n\t\t});\n\n\t\t// Merge delete operations which are adjacent or overlapping\n\t\tconst mergedOperations: IDeleteLinesOperation[] = [];\n\t\tlet previousOperation = operations[0];\n\t\tfor (let i = 1; i < operations.length; i++) {\n\t\t\tif (previousOperation.endLineNumber + 1 >= operations[i].startLineNumber) {\n\t\t\t\t// Merge current operations into the previous one\n\t\t\t\tpreviousOperation.endLineNumber = operations[i].endLineNumber;\n\t\t\t} else {\n\t\t\t\t// Push previous operation\n\t\t\t\tmergedOperations.push(previousOperation);\n\t\t\t\tpreviousOperation = operations[i];\n\t\t\t}\n\t\t}\n\t\t// Push the last operation\n\t\tmergedOperations.push(previousOperation);\n\n\t\treturn mergedOperations;\n\t}\n}\n\nexport class IndentLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.indentLines',\n\t\t\tlabel: nls.localize2('lines.indent', \"Indent Line\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.BracketRight,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\treturn;\n\t\t}\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, TypeOperations.indent(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n\t\teditor.pushUndoStop();\n\t}\n}\n\nclass OutdentLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.outdentLines',\n\t\t\tlabel: nls.localize2('lines.outdent', \"Outdent Line\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.BracketLeft,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tCoreEditingCommands.Outdent.runEditorCommand(_accessor, editor, null);\n\t}\n}\n\nexport class InsertLineBeforeAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertLineBefore',\n\t\t\tlabel: nls.localize2('lines.insertBefore', \"Insert Line Above\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyMod.Shift | KeyCode.Enter,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\treturn;\n\t\t}\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, EnterOperation.lineInsertBefore(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n\t}\n}\n\nexport class InsertLineAfterAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.insertLineAfter',\n\t\t\tlabel: nls.localize2('lines.insertAfter', \"Insert Line Below\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Enter,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst viewModel = editor._getViewModel();\n\t\tif (!viewModel) {\n\t\t\treturn;\n\t\t}\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, EnterOperation.lineInsertAfter(viewModel.cursorConfig, editor.getModel(), editor.getSelections()));\n\t}\n}\n\nexport abstract class AbstractDeleteAllToBoundaryAction extends EditorAction {\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst primaryCursor = editor.getSelection();\n\n\t\tconst rangesToDelete = this._getRangesToDelete(editor);\n\t\t// merge overlapping selections\n\t\tconst effectiveRanges: Range[] = [];\n\n\t\tfor (let i = 0, count = rangesToDelete.length - 1; i < count; i++) {\n\t\t\tconst range = rangesToDelete[i];\n\t\t\tconst nextRange = rangesToDelete[i + 1];\n\n\t\t\tif (Range.intersectRanges(range, nextRange) === null) {\n\t\t\t\teffectiveRanges.push(range);\n\t\t\t} else {\n\t\t\t\trangesToDelete[i + 1] = Range.plusRange(range, nextRange);\n\t\t\t}\n\t\t}\n\n\t\teffectiveRanges.push(rangesToDelete[rangesToDelete.length - 1]);\n\n\t\tconst endCursorState = this._getEndCursorState(primaryCursor, effectiveRanges);\n\n\t\tconst edits: ISingleEditOperation[] = effectiveRanges.map(range => {\n\t\t\treturn EditOperation.replace(range, '');\n\t\t});\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, endCursorState);\n\t\teditor.pushUndoStop();\n\t}\n\n\t/**\n\t * Compute the cursor state after the edit operations were applied.\n\t */\n\tprotected abstract _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[];\n\n\tprotected abstract _getRangesToDelete(editor: IActiveCodeEditor): Range[];\n}\n\nexport class DeleteAllLeftAction extends AbstractDeleteAllToBoundaryAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'deleteAllLeft',\n\t\t\tlabel: nls.localize2('lines.deleteAllLeft', \"Delete All Left\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: { primary: KeyMod.CtrlCmd | KeyCode.Backspace },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[] {\n\t\tlet endPrimaryCursor: Selection | null = null;\n\t\tconst endCursorState: Selection[] = [];\n\t\tlet deletedLines = 0;\n\n\t\trangesToDelete.forEach(range => {\n\t\t\tlet endCursor;\n\t\t\tif (range.endColumn === 1 && deletedLines > 0) {\n\t\t\t\tconst newStartLine = range.startLineNumber - deletedLines;\n\t\t\t\tendCursor = new Selection(newStartLine, range.startColumn, newStartLine, range.startColumn);\n\t\t\t} else {\n\t\t\t\tendCursor = new Selection(range.startLineNumber, range.startColumn, range.startLineNumber, range.startColumn);\n\t\t\t}\n\n\t\t\tdeletedLines += range.endLineNumber - range.startLineNumber;\n\n\t\t\tif (range.intersectRanges(primaryCursor)) {\n\t\t\t\tendPrimaryCursor = endCursor;\n\t\t\t} else {\n\t\t\t\tendCursorState.push(endCursor);\n\t\t\t}\n\t\t});\n\n\t\tif (endPrimaryCursor) {\n\t\t\tendCursorState.unshift(endPrimaryCursor);\n\t\t}\n\n\t\treturn endCursorState;\n\t}\n\n\tprotected _getRangesToDelete(editor: IActiveCodeEditor): Range[] {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\tlet rangesToDelete: Range[] = selections;\n\t\tconst model = editor.getModel();\n\n\t\tif (model === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\trangesToDelete.sort(Range.compareRangesUsingStarts);\n\t\trangesToDelete = rangesToDelete.map(selection => {\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\tif (selection.startColumn === 1) {\n\t\t\t\t\tconst deleteFromLine = Math.max(1, selection.startLineNumber - 1);\n\t\t\t\t\tconst deleteFromColumn = selection.startLineNumber === 1 ? 1 : model.getLineLength(deleteFromLine) + 1;\n\t\t\t\t\treturn new Range(deleteFromLine, deleteFromColumn, selection.startLineNumber, 1);\n\t\t\t\t} else {\n\t\t\t\t\treturn new Range(selection.startLineNumber, 1, selection.startLineNumber, selection.startColumn);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\treturn new Range(selection.startLineNumber, 1, selection.endLineNumber, selection.endColumn);\n\t\t\t}\n\t\t});\n\n\t\treturn rangesToDelete;\n\t}\n}\n\nexport class DeleteAllRightAction extends AbstractDeleteAllToBoundaryAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'deleteAllRight',\n\t\t\tlabel: nls.localize2('lines.deleteAllRight', \"Delete All Right\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyK, secondary: [KeyMod.CtrlCmd | KeyCode.Delete] },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tprotected _getEndCursorState(primaryCursor: Range, rangesToDelete: Range[]): Selection[] {\n\t\tlet endPrimaryCursor: Selection | null = null;\n\t\tconst endCursorState: Selection[] = [];\n\t\tfor (let i = 0, len = rangesToDelete.length, offset = 0; i < len; i++) {\n\t\t\tconst range = rangesToDelete[i];\n\t\t\tconst endCursor = new Selection(range.startLineNumber - offset, range.startColumn, range.startLineNumber - offset, range.startColumn);\n\n\t\t\tif (range.intersectRanges(primaryCursor)) {\n\t\t\t\tendPrimaryCursor = endCursor;\n\t\t\t} else {\n\t\t\t\tendCursorState.push(endCursor);\n\t\t\t}\n\t\t}\n\n\t\tif (endPrimaryCursor) {\n\t\t\tendCursorState.unshift(endPrimaryCursor);\n\t\t}\n\n\t\treturn endCursorState;\n\t}\n\n\tprotected _getRangesToDelete(editor: IActiveCodeEditor): Range[] {\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst selections = editor.getSelections();\n\n\t\tif (selections === null) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst rangesToDelete: Range[] = selections.map((sel) => {\n\t\t\tif (sel.isEmpty()) {\n\t\t\t\tconst maxColumn = model.getLineMaxColumn(sel.startLineNumber);\n\n\t\t\t\tif (sel.startColumn === maxColumn) {\n\t\t\t\t\treturn new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber + 1, 1);\n\t\t\t\t} else {\n\t\t\t\t\treturn new Range(sel.startLineNumber, sel.startColumn, sel.startLineNumber, maxColumn);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn sel;\n\t\t});\n\n\t\trangesToDelete.sort(Range.compareRangesUsingStarts);\n\t\treturn rangesToDelete;\n\t}\n}\n\nexport class JoinLinesAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.joinLines',\n\t\t\tlabel: nls.localize2('lines.joinLines', \"Join Lines\"),\n\t\t\tprecondition: EditorContextKeys.writable,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.editorTextFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.KeyJ },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet primaryCursor = editor.getSelection();\n\t\tif (primaryCursor === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tselections.sort(Range.compareRangesUsingStarts);\n\t\tconst reducedSelections: Selection[] = [];\n\n\t\tconst lastSelection = selections.reduce((previousValue, currentValue) => {\n\t\t\tif (previousValue.isEmpty()) {\n\t\t\t\tif (previousValue.endLineNumber === currentValue.startLineNumber) {\n\t\t\t\t\tif (primaryCursor!.equalsSelection(previousValue)) {\n\t\t\t\t\t\tprimaryCursor = currentValue;\n\t\t\t\t\t}\n\t\t\t\t\treturn currentValue;\n\t\t\t\t}\n\n\t\t\t\tif (currentValue.startLineNumber > previousValue.endLineNumber + 1) {\n\t\t\t\t\treducedSelections.push(previousValue);\n\t\t\t\t\treturn currentValue;\n\t\t\t\t} else {\n\t\t\t\t\treturn new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (currentValue.startLineNumber > previousValue.endLineNumber) {\n\t\t\t\t\treducedSelections.push(previousValue);\n\t\t\t\t\treturn currentValue;\n\t\t\t\t} else {\n\t\t\t\t\treturn new Selection(previousValue.startLineNumber, previousValue.startColumn, currentValue.endLineNumber, currentValue.endColumn);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\treducedSelections.push(lastSelection);\n\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst edits: ISingleEditOperation[] = [];\n\t\tconst endCursorState: Selection[] = [];\n\t\tlet endPrimaryCursor = primaryCursor;\n\t\tlet lineOffset = 0;\n\n\t\tfor (let i = 0, len = reducedSelections.length; i < len; i++) {\n\t\t\tconst selection = reducedSelections[i];\n\t\t\tconst startLineNumber = selection.startLineNumber;\n\t\t\tconst startColumn = 1;\n\t\t\tlet columnDeltaOffset = 0;\n\t\t\tlet endLineNumber: number,\n\t\t\t\tendColumn: number;\n\n\t\t\tconst selectionEndPositionOffset = model.getLineLength(selection.endLineNumber) - selection.endColumn;\n\n\t\t\tif (selection.isEmpty() || selection.startLineNumber === selection.endLineNumber) {\n\t\t\t\tconst position = selection.getStartPosition();\n\t\t\t\tif (position.lineNumber < model.getLineCount()) {\n\t\t\t\t\tendLineNumber = startLineNumber + 1;\n\t\t\t\t\tendColumn = model.getLineMaxColumn(endLineNumber);\n\t\t\t\t} else {\n\t\t\t\t\tendLineNumber = position.lineNumber;\n\t\t\t\t\tendColumn = model.getLineMaxColumn(position.lineNumber);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tendLineNumber = selection.endLineNumber;\n\t\t\t\tendColumn = model.getLineMaxColumn(endLineNumber);\n\t\t\t}\n\n\t\t\tlet trimmedLinesContent = model.getLineContent(startLineNumber);\n\n\t\t\tfor (let i = startLineNumber + 1; i <= endLineNumber; i++) {\n\t\t\t\tconst lineText = model.getLineContent(i);\n\t\t\t\tconst firstNonWhitespaceIdx = model.getLineFirstNonWhitespaceColumn(i);\n\n\t\t\t\tif (firstNonWhitespaceIdx >= 1) {\n\t\t\t\t\tlet insertSpace = true;\n\t\t\t\t\tif (trimmedLinesContent === '') {\n\t\t\t\t\t\tinsertSpace = false;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (insertSpace && (trimmedLinesContent.charAt(trimmedLinesContent.length - 1) === ' ' ||\n\t\t\t\t\t\ttrimmedLinesContent.charAt(trimmedLinesContent.length - 1) === '\\t')) {\n\t\t\t\t\t\tinsertSpace = false;\n\t\t\t\t\t\ttrimmedLinesContent = trimmedLinesContent.replace(/[\\s\\uFEFF\\xA0]+$/g, ' ');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst lineTextWithoutIndent = lineText.substr(firstNonWhitespaceIdx - 1);\n\n\t\t\t\t\ttrimmedLinesContent += (insertSpace ? ' ' : '') + lineTextWithoutIndent;\n\n\t\t\t\t\tif (insertSpace) {\n\t\t\t\t\t\tcolumnDeltaOffset = lineTextWithoutIndent.length + 1;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcolumnDeltaOffset = lineTextWithoutIndent.length;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcolumnDeltaOffset = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst deleteSelection = new Range(startLineNumber, startColumn, endLineNumber, endColumn);\n\n\t\t\tif (!deleteSelection.isEmpty()) {\n\t\t\t\tlet resultSelection: Selection;\n\n\t\t\t\tif (selection.isEmpty()) {\n\t\t\t\t\tedits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n\t\t\t\t\tresultSelection = new Selection(deleteSelection.startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1, startLineNumber - lineOffset, trimmedLinesContent.length - columnDeltaOffset + 1);\n\t\t\t\t} else {\n\t\t\t\t\tif (selection.startLineNumber === selection.endLineNumber) {\n\t\t\t\t\t\tedits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n\t\t\t\t\t\tresultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn,\n\t\t\t\t\t\t\tselection.endLineNumber - lineOffset, selection.endColumn);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tedits.push(EditOperation.replace(deleteSelection, trimmedLinesContent));\n\t\t\t\t\t\tresultSelection = new Selection(selection.startLineNumber - lineOffset, selection.startColumn,\n\t\t\t\t\t\t\tselection.startLineNumber - lineOffset, trimmedLinesContent.length - selectionEndPositionOffset);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (Range.intersectRanges(deleteSelection, primaryCursor) !== null) {\n\t\t\t\t\tendPrimaryCursor = resultSelection;\n\t\t\t\t} else {\n\t\t\t\t\tendCursorState.push(resultSelection);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlineOffset += deleteSelection.endLineNumber - deleteSelection.startLineNumber;\n\t\t}\n\n\t\tendCursorState.unshift(endPrimaryCursor);\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, edits, endCursorState);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport class TransposeAction extends EditorAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transpose',\n\t\t\tlabel: nls.localize2('editor.transpose', \"Transpose Characters around the Cursor\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst commands: ICommand[] = [];\n\n\t\tfor (let i = 0, len = selections.length; i < len; i++) {\n\t\t\tconst selection = selections[i];\n\n\t\t\tif (!selection.isEmpty()) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst cursor = selection.getStartPosition();\n\t\t\tconst maxColumn = model.getLineMaxColumn(cursor.lineNumber);\n\n\t\t\tif (cursor.column >= maxColumn) {\n\t\t\t\tif (cursor.lineNumber === model.getLineCount()) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// The cursor is at the end of current line and current line is not empty\n\t\t\t\t// then we transpose the character before the cursor and the line break if there is any following line.\n\t\t\t\tconst deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1);\n\t\t\t\tconst chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n\n\t\t\t\tcommands.push(new ReplaceCommand(new Selection(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber + 1, 1), chars));\n\t\t\t} else {\n\t\t\t\tconst deleteSelection = new Range(cursor.lineNumber, Math.max(1, cursor.column - 1), cursor.lineNumber, cursor.column + 1);\n\t\t\t\tconst chars = model.getValueInRange(deleteSelection).split('').reverse().join('');\n\t\t\t\tcommands.push(new ReplaceCommandThatPreservesSelection(deleteSelection, chars,\n\t\t\t\t\tnew Selection(cursor.lineNumber, cursor.column + 1, cursor.lineNumber, cursor.column + 1)));\n\t\t\t}\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeCommands(this.id, commands);\n\t\teditor.pushUndoStop();\n\t}\n}\n\nexport abstract class AbstractCaseAction extends EditorAction {\n\tpublic run(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst selections = editor.getSelections();\n\t\tif (selections === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst model = editor.getModel();\n\t\tif (model === null) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst wordSeparators = editor.getOption(EditorOption.wordSeparators);\n\t\tconst textEdits: ISingleEditOperation[] = [];\n\n\t\tfor (const selection of selections) {\n\t\t\tif (selection.isEmpty()) {\n\t\t\t\tconst cursor = selection.getStartPosition();\n\t\t\t\tconst word = editor.getConfiguredWordAtPosition(cursor);\n\n\t\t\t\tif (!word) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tconst wordRange = new Range(cursor.lineNumber, word.startColumn, cursor.lineNumber, word.endColumn);\n\t\t\t\tconst text = model.getValueInRange(wordRange);\n\t\t\t\ttextEdits.push(EditOperation.replace(wordRange, this._modifyText(text, wordSeparators)));\n\t\t\t} else {\n\t\t\t\tconst text = model.getValueInRange(selection);\n\t\t\t\ttextEdits.push(EditOperation.replace(selection, this._modifyText(text, wordSeparators)));\n\t\t\t}\n\t\t}\n\n\t\teditor.pushUndoStop();\n\t\teditor.executeEdits(this.id, textEdits);\n\t\teditor.pushUndoStop();\n\t}\n\n\tprotected abstract _modifyText(text: string, wordSeparators: string): string;\n}\n\nexport class UpperCaseAction extends AbstractCaseAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToUppercase',\n\t\t\tlabel: nls.localize2('editor.transformToUppercase', \"Transform to Uppercase\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\treturn text.toLocaleUpperCase();\n\t}\n}\n\nexport class LowerCaseAction extends AbstractCaseAction {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToLowercase',\n\t\t\tlabel: nls.localize2('editor.transformToLowercase', \"Transform to Lowercase\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\treturn text.toLocaleLowerCase();\n\t}\n}\n\nclass BackwardsCompatibleRegExp {\n\n\tprivate _actual: RegExp | null;\n\tprivate _evaluated: boolean;\n\n\tconstructor(\n\t\tprivate readonly _pattern: string,\n\t\tprivate readonly _flags: string\n\t) {\n\t\tthis._actual = null;\n\t\tthis._evaluated = false;\n\t}\n\n\tpublic get(): RegExp | null {\n\t\tif (!this._evaluated) {\n\t\t\tthis._evaluated = true;\n\t\t\ttry {\n\t\t\t\tthis._actual = new RegExp(this._pattern, this._flags);\n\t\t\t} catch (err) {\n\t\t\t\t// this browser does not support this regular expression\n\t\t\t}\n\t\t}\n\t\treturn this._actual;\n\t}\n\n\tpublic isSupported(): boolean {\n\t\treturn (this.get() !== null);\n\t}\n}\n\nexport class TitleCaseAction extends AbstractCaseAction {\n\n\tpublic static titleBoundary = new BackwardsCompatibleRegExp('(^|[^\\\\p{L}\\\\p{N}\\']|((^|\\\\P{L})\\'))\\\\p{L}', 'gmu');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToTitlecase',\n\t\t\tlabel: nls.localize2('editor.transformToTitlecase', \"Transform to Title Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst titleBoundary = TitleCaseAction.titleBoundary.get();\n\t\tif (!titleBoundary) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\t\treturn text\n\t\t\t.toLocaleLowerCase()\n\t\t\t.replace(titleBoundary, (b) => b.toLocaleUpperCase());\n\t}\n}\n\nexport class SnakeCaseAction extends AbstractCaseAction {\n\n\tpublic static caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\n\tpublic static singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu})(\\\\p{Ll})', 'gmu');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToSnakecase',\n\t\t\tlabel: nls.localize2('editor.transformToSnakecase', \"Transform to Snake Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst caseBoundary = SnakeCaseAction.caseBoundary.get();\n\t\tconst singleLetters = SnakeCaseAction.singleLetters.get();\n\t\tif (!caseBoundary || !singleLetters) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\t\treturn (text\n\t\t\t.replace(caseBoundary, '$1_$2')\n\t\t\t.replace(singleLetters, '$1_$2$3')\n\t\t\t.toLocaleLowerCase()\n\t\t);\n\t}\n}\n\nexport class CamelCaseAction extends AbstractCaseAction {\n\tpublic static singleLineWordBoundary = new BackwardsCompatibleRegExp('[_\\\\s-]+', 'gm');\n\tpublic static multiLineWordBoundary = new BackwardsCompatibleRegExp('[_-]+', 'gm');\n\tpublic static validWordStart = new BackwardsCompatibleRegExp('^(\\\\p{Lu}[^\\\\p{Lu}])', 'gmu');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToCamelcase',\n\t\t\tlabel: nls.localize2('editor.transformToCamelcase', \"Transform to Camel Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst wordBoundary = /\\r\\n|\\r|\\n/.test(text) ? CamelCaseAction.multiLineWordBoundary.get() : CamelCaseAction.singleLineWordBoundary.get();\n\t\tconst validWordStart = CamelCaseAction.validWordStart.get();\n\t\tif (!wordBoundary || !validWordStart) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\t\tconst words = text.split(wordBoundary);\n\t\tconst firstWord = words.shift()?.replace(validWordStart, (start: string) => start.toLocaleLowerCase());\n\t\treturn firstWord + words.map((word: string) => word.substring(0, 1).toLocaleUpperCase() + word.substring(1))\n\t\t\t.join('');\n\t}\n}\n\nexport class PascalCaseAction extends AbstractCaseAction {\n\tpublic static wordBoundary = new BackwardsCompatibleRegExp('[_ \\\\t-]', 'gm');\n\tpublic static wordBoundaryToMaintain = new BackwardsCompatibleRegExp('(?<=\\\\.)', 'gm');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToPascalcase',\n\t\t\tlabel: nls.localize2('editor.transformToPascalcase', \"Transform to Pascal Case\"),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, wordSeparators: string): string {\n\t\tconst wordBoundary = PascalCaseAction.wordBoundary.get();\n\t\tconst wordBoundaryToMaintain = PascalCaseAction.wordBoundaryToMaintain.get();\n\n\t\tif (!wordBoundary || !wordBoundaryToMaintain) {\n\t\t\t// cannot support this\n\t\t\treturn text;\n\t\t}\n\n\t\tconst wordsWithMaintainBoundaries = text.split(wordBoundaryToMaintain);\n\t\tconst words = wordsWithMaintainBoundaries.map((word: string) => word.split(wordBoundary)).flat();\n\t\treturn words.map((word: string) => word.substring(0, 1).toLocaleUpperCase() + word.substring(1))\n\t\t\t.join('');\n\t}\n}\n\nexport class KebabCaseAction extends AbstractCaseAction {\n\n\tpublic static isSupported(): boolean {\n\t\tconst areAllRegexpsSupported = [\n\t\t\tthis.caseBoundary,\n\t\t\tthis.singleLetters,\n\t\t\tthis.underscoreBoundary,\n\t\t].every((regexp) => regexp.isSupported());\n\n\t\treturn areAllRegexpsSupported;\n\t}\n\n\tprivate static caseBoundary = new BackwardsCompatibleRegExp('(\\\\p{Ll})(\\\\p{Lu})', 'gmu');\n\tprivate static singleLetters = new BackwardsCompatibleRegExp('(\\\\p{Lu}|\\\\p{N})(\\\\p{Lu}\\\\p{Ll})', 'gmu');\n\tprivate static underscoreBoundary = new BackwardsCompatibleRegExp('(\\\\S)(_)(\\\\S)', 'gm');\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.transformToKebabcase',\n\t\t\tlabel: nls.localize2('editor.transformToKebabcase', 'Transform to Kebab Case'),\n\t\t\tprecondition: EditorContextKeys.writable\n\t\t});\n\t}\n\n\tprotected _modifyText(text: string, _: string): string {\n\t\tconst caseBoundary = KebabCaseAction.caseBoundary.get();\n\t\tconst singleLetters = KebabCaseAction.singleLetters.get();\n\t\tconst underscoreBoundary = KebabCaseAction.underscoreBoundary.get();\n\n\t\tif (!caseBoundary || !singleLetters || !underscoreBoundary) {\n\t\t\t// one or more regexps aren't supported\n\t\t\treturn text;\n\t\t}\n\n\t\treturn text\n\t\t\t.replace(underscoreBoundary, '$1-$3')\n\t\t\t.replace(caseBoundary, '$1-$2')\n\t\t\t.replace(singleLetters, '$1-$2')\n\t\t\t.toLocaleLowerCase();\n\t}\n}\n\nregisterEditorAction(CopyLinesUpAction);\nregisterEditorAction(CopyLinesDownAction);\nregisterEditorAction(DuplicateSelectionAction);\nregisterEditorAction(MoveLinesUpAction);\nregisterEditorAction(MoveLinesDownAction);\nregisterEditorAction(SortLinesAscendingAction);\nregisterEditorAction(SortLinesDescendingAction);\nregisterEditorAction(DeleteDuplicateLinesAction);\nregisterEditorAction(TrimTrailingWhitespaceAction);\nregisterEditorAction(DeleteLinesAction);\nregisterEditorAction(IndentLinesAction);\nregisterEditorAction(OutdentLinesAction);\nregisterEditorAction(InsertLineBeforeAction);\nregisterEditorAction(InsertLineAfterAction);\nregisterEditorAction(DeleteAllLeftAction);\nregisterEditorAction(DeleteAllRightAction);\nregisterEditorAction(JoinLinesAction);\nregisterEditorAction(TransposeAction);\nregisterEditorAction(UpperCaseAction);\nregisterEditorAction(LowerCaseAction);\nregisterEditorAction(ReverseLinesAction);\n\nif (SnakeCaseAction.caseBoundary.isSupported() && SnakeCaseAction.singleLetters.isSupported()) {\n\tregisterEditorAction(SnakeCaseAction);\n}\nif (CamelCaseAction.singleLineWordBoundary.isSupported() && CamelCaseAction.multiLineWordBoundary.isSupported()) {\n\tregisterEditorAction(CamelCaseAction);\n}\nif (PascalCaseAction.wordBoundary.isSupported()) {\n\tregisterEditorAction(PascalCaseAction);\n}\nif (TitleCaseAction.titleBoundary.isSupported()) {\n\tregisterEditorAction(TitleCaseAction);\n}\n\nif (KebabCaseAction.isSupported()) {\n\tregisterEditorAction(KebabCaseAction);\n}\n"]}
@@ -139,7 +139,7 @@ export class QuickInputEditorWidget {
139
139
  return this.domNode;
140
140
  }
141
141
  getPosition() {
142
- return { preference: 2 /* OverlayWidgetPositionPreference.TOP_CENTER */ };
142
+ return { preference: { top: 0, left: 0 } };
143
143
  }
144
144
  dispose() {
145
145
  this.codeEditor.removeOverlayWidget(this);
@@ -1 +1 @@
1
- {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.ts","vs/editor/standalone/browser/quickInput/standaloneQuickInputService.ts"],"names":[],"mappings":"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","file":"standaloneQuickInputService.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 './standaloneQuickInput.css';\nimport { Event } from '../../../../base/common/event.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, OverlayWidgetPositionPreference } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPick, IInputBox, IPickOptions, QuickPickInput, IInputOptions } from '../../../../platform/quickinput/common/quickInput.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { EditorScopedLayoutService } from '../standaloneLayoutService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { QuickInputController, IQuickInputControllerHost } from '../../../../platform/quickinput/browser/quickInputController.js';\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInputService.js';\nimport { createSingleCallFunction } from '../../../../base/common/functional.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nclass EditorScopedQuickInputService extends QuickInputService {\n\n\tprivate host: IQuickInputControllerHost | undefined = undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t) {\n\t\tsuper(\n\t\t\tinstantiationService,\n\t\t\tcontextKeyService,\n\t\t\tthemeService,\n\t\t\tnew EditorScopedLayoutService(editor.getContainerDomNode(), codeEditorService),\n\t\t\tconfigurationService,\n\t\t);\n\n\t\t// Use the passed in code editor as host for the quick input widget\n\t\tconst contribution = QuickInputEditorContribution.get(editor);\n\t\tif (contribution) {\n\t\t\tconst widget = contribution.widget;\n\t\t\tthis.host = {\n\t\t\t\t_serviceBrand: undefined,\n\t\t\t\tget mainContainer() { return widget.getDomNode(); },\n\t\t\t\tgetContainer() { return widget.getDomNode(); },\n\t\t\t\twhenContainerStylesLoaded() { return undefined; },\n\t\t\t\tget containers() { return [widget.getDomNode()]; },\n\t\t\t\tget activeContainer() { return widget.getDomNode(); },\n\t\t\t\tget mainContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget activeContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget onDidLayoutMainContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutActiveContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutContainer() { return Event.map(editor.onDidLayoutChange, dimension => ({ container: widget.getDomNode(), dimension })); },\n\t\t\t\tget onDidChangeActiveContainer() { return Event.None; },\n\t\t\t\tget onDidAddContainer() { return Event.None; },\n\t\t\t\tget mainContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tget activeContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tfocus: () => editor.focus()\n\t\t\t};\n\t\t} else {\n\t\t\tthis.host = undefined;\n\t\t}\n\t}\n\n\tprotected override createController(): QuickInputController {\n\t\treturn super.createController(this.host);\n\t}\n}\n\nexport class StandaloneQuickInputService implements IQuickInputService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate mapEditorToService = new Map<ICodeEditor, EditorScopedQuickInputService>();\n\tprivate get activeService(): IQuickInputService {\n\t\tconst editor = this.codeEditorService.getFocusedCodeEditor();\n\t\tif (!editor) {\n\t\t\tthrow new Error('Quick input service needs a focused editor to work.');\n\t\t}\n\n\t\t// Find the quick input implementation for the focused\n\t\t// editor or create it lazily if not yet created\n\t\tlet quickInputService = this.mapEditorToService.get(editor);\n\t\tif (!quickInputService) {\n\t\t\tconst newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputService, editor);\n\t\t\tthis.mapEditorToService.set(editor, quickInputService);\n\n\t\t\tcreateSingleCallFunction(editor.onDidDispose)(() => {\n\t\t\t\tnewQuickInputService.dispose();\n\t\t\t\tthis.mapEditorToService.delete(editor);\n\t\t\t});\n\t\t}\n\n\t\treturn quickInputService;\n\t}\n\n\tget currentQuickInput() { return this.activeService.currentQuickInput; }\n\tget quickAccess() { return this.activeService.quickAccess; }\n\n\tconstructor(\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t\t@ICodeEditorService private readonly codeEditorService: ICodeEditorService\n\t) {\n\t}\n\n\tpick<T extends IQuickPickItem, O extends IPickOptions<T>>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[], options?: O, token: CancellationToken = CancellationToken.None): Promise<(O extends { canPickMany: true } ? T[] : T) | undefined> {\n\t\treturn (this.activeService as unknown as QuickInputController /* TS fail */).pick(picks, options, token);\n\t}\n\n\tinput(options?: IInputOptions | undefined, token?: CancellationToken | undefined): Promise<string | undefined> {\n\t\treturn this.activeService.input(options, token);\n\t}\n\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: true }): IQuickPick<T, { useSeparators: true }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options?: { useSeparators: boolean }): IQuickPick<T, { useSeparators: false }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: boolean } = { useSeparators: false }): IQuickPick<T, { useSeparators: boolean }> {\n\t\treturn this.activeService.createQuickPick(options);\n\t}\n\n\tcreateInputBox(): IInputBox {\n\t\treturn this.activeService.createInputBox();\n\t}\n\n\ttoggleHover(): void {\n\t\treturn this.activeService.toggleHover();\n\t}\n}\n\nexport class QuickInputEditorContribution implements IEditorContribution {\n\n\tstatic readonly ID = 'editor.controller.quickInput';\n\n\tstatic get(editor: ICodeEditor): QuickInputEditorContribution | null {\n\t\treturn editor.getContribution<QuickInputEditorContribution>(QuickInputEditorContribution.ID);\n\t}\n\n\treadonly widget: QuickInputEditorWidget;\n\n\tconstructor(private editor: ICodeEditor) {\n\t\tthis.widget = new QuickInputEditorWidget(this.editor);\n\t}\n\n\tdispose(): void {\n\t\tthis.widget.dispose();\n\t}\n}\n\nexport class QuickInputEditorWidget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.quickInputWidget';\n\n\tprivate domNode: HTMLElement;\n\n\tconstructor(private codeEditor: ICodeEditor) {\n\t\tthis.domNode = document.createElement('div');\n\n\t\tthis.codeEditor.addOverlayWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn QuickInputEditorWidget.ID;\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\tgetPosition(): IOverlayWidgetPosition | null {\n\t\treturn { preference: OverlayWidgetPositionPreference.TOP_CENTER };\n\t}\n\n\tdispose(): void {\n\t\tthis.codeEditor.removeOverlayWidget(this);\n\t}\n}\n\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution, EditorContributionInstantiation.Lazy);\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 './standaloneQuickInput.css';\nimport { Event } from '../../../../base/common/event.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition, OverlayWidgetPositionPreference } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPick, IInputBox, IPickOptions, QuickPickInput, IInputOptions } from '../../../../platform/quickinput/common/quickInput.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { EditorScopedLayoutService } from '../standaloneLayoutService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { QuickInputController, IQuickInputControllerHost } from '../../../../platform/quickinput/browser/quickInputController.js';\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInputService.js';\nimport { createSingleCallFunction } from '../../../../base/common/functional.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nclass EditorScopedQuickInputService extends QuickInputService {\n\n\tprivate host: IQuickInputControllerHost | undefined = undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t) {\n\t\tsuper(\n\t\t\tinstantiationService,\n\t\t\tcontextKeyService,\n\t\t\tthemeService,\n\t\t\tnew EditorScopedLayoutService(editor.getContainerDomNode(), codeEditorService),\n\t\t\tconfigurationService,\n\t\t);\n\n\t\t// Use the passed in code editor as host for the quick input widget\n\t\tconst contribution = QuickInputEditorContribution.get(editor);\n\t\tif (contribution) {\n\t\t\tconst widget = contribution.widget;\n\t\t\tthis.host = {\n\t\t\t\t_serviceBrand: undefined,\n\t\t\t\tget mainContainer() { return widget.getDomNode(); },\n\t\t\t\tgetContainer() { return widget.getDomNode(); },\n\t\t\t\twhenContainerStylesLoaded() { return undefined; },\n\t\t\t\tget containers() { return [widget.getDomNode()]; },\n\t\t\t\tget activeContainer() { return widget.getDomNode(); },\n\t\t\t\tget mainContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget activeContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget onDidLayoutMainContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutActiveContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutContainer() { return Event.map(editor.onDidLayoutChange, dimension => ({ container: widget.getDomNode(), dimension })); },\n\t\t\t\tget onDidChangeActiveContainer() { return Event.None; },\n\t\t\t\tget onDidAddContainer() { return Event.None; },\n\t\t\t\tget mainContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tget activeContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tfocus: () => editor.focus()\n\t\t\t};\n\t\t} else {\n\t\t\tthis.host = undefined;\n\t\t}\n\t}\n\n\tprotected override createController(): QuickInputController {\n\t\treturn super.createController(this.host);\n\t}\n}\n\nexport class StandaloneQuickInputService implements IQuickInputService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate mapEditorToService = new Map<ICodeEditor, EditorScopedQuickInputService>();\n\tprivate get activeService(): IQuickInputService {\n\t\tconst editor = this.codeEditorService.getFocusedCodeEditor();\n\t\tif (!editor) {\n\t\t\tthrow new Error('Quick input service needs a focused editor to work.');\n\t\t}\n\n\t\t// Find the quick input implementation for the focused\n\t\t// editor or create it lazily if not yet created\n\t\tlet quickInputService = this.mapEditorToService.get(editor);\n\t\tif (!quickInputService) {\n\t\t\tconst newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputService, editor);\n\t\t\tthis.mapEditorToService.set(editor, quickInputService);\n\n\t\t\tcreateSingleCallFunction(editor.onDidDispose)(() => {\n\t\t\t\tnewQuickInputService.dispose();\n\t\t\t\tthis.mapEditorToService.delete(editor);\n\t\t\t});\n\t\t}\n\n\t\treturn quickInputService;\n\t}\n\n\tget currentQuickInput() { return this.activeService.currentQuickInput; }\n\tget quickAccess() { return this.activeService.quickAccess; }\n\n\tconstructor(\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t\t@ICodeEditorService private readonly codeEditorService: ICodeEditorService\n\t) {\n\t}\n\n\tpick<T extends IQuickPickItem, O extends IPickOptions<T>>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[], options?: O, token: CancellationToken = CancellationToken.None): Promise<(O extends { canPickMany: true } ? T[] : T) | undefined> {\n\t\treturn (this.activeService as unknown as QuickInputController /* TS fail */).pick(picks, options, token);\n\t}\n\n\tinput(options?: IInputOptions | undefined, token?: CancellationToken | undefined): Promise<string | undefined> {\n\t\treturn this.activeService.input(options, token);\n\t}\n\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: true }): IQuickPick<T, { useSeparators: true }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options?: { useSeparators: boolean }): IQuickPick<T, { useSeparators: false }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: boolean } = { useSeparators: false }): IQuickPick<T, { useSeparators: boolean }> {\n\t\treturn this.activeService.createQuickPick(options);\n\t}\n\n\tcreateInputBox(): IInputBox {\n\t\treturn this.activeService.createInputBox();\n\t}\n\n\ttoggleHover(): void {\n\t\treturn this.activeService.toggleHover();\n\t}\n}\n\nexport class QuickInputEditorContribution implements IEditorContribution {\n\n\tstatic readonly ID = 'editor.controller.quickInput';\n\n\tstatic get(editor: ICodeEditor): QuickInputEditorContribution | null {\n\t\treturn editor.getContribution<QuickInputEditorContribution>(QuickInputEditorContribution.ID);\n\t}\n\n\treadonly widget: QuickInputEditorWidget;\n\n\tconstructor(private editor: ICodeEditor) {\n\t\tthis.widget = new QuickInputEditorWidget(this.editor);\n\t}\n\n\tdispose(): void {\n\t\tthis.widget.dispose();\n\t}\n}\n\nexport class QuickInputEditorWidget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.quickInputWidget';\n\n\tprivate domNode: HTMLElement;\n\n\tconstructor(private codeEditor: ICodeEditor) {\n\t\tthis.domNode = document.createElement('div');\n\n\t\tthis.codeEditor.addOverlayWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn QuickInputEditorWidget.ID;\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\tgetPosition(): IOverlayWidgetPosition | null {\n\t\treturn { preference: OverlayWidgetPositionPreference.TOP_CENTER };\n\t}\n\n\tdispose(): void {\n\t\tthis.codeEditor.removeOverlayWidget(this);\n\t}\n}\n\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution, EditorContributionInstantiation.Lazy);\n"]}
1
+ {"version":3,"sources":["file:///mnt/vss/_work/1/s/dependencies/vscode/out-editor-src/vs/editor/standalone/browser/quickInput/standaloneQuickInputService.ts","vs/editor/standalone/browser/quickInput/standaloneQuickInputService.ts"],"names":[],"mappings":"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","file":"standaloneQuickInputService.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 './standaloneQuickInput.css';\nimport { Event } from '../../../../base/common/event.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPick, IInputBox, IPickOptions, QuickPickInput, IInputOptions } from '../../../../platform/quickinput/common/quickInput.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { EditorScopedLayoutService } from '../standaloneLayoutService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { QuickInputController, IQuickInputControllerHost } from '../../../../platform/quickinput/browser/quickInputController.js';\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInputService.js';\nimport { createSingleCallFunction } from '../../../../base/common/functional.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nclass EditorScopedQuickInputService extends QuickInputService {\n\n\tprivate host: IQuickInputControllerHost | undefined = undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t) {\n\t\tsuper(\n\t\t\tinstantiationService,\n\t\t\tcontextKeyService,\n\t\t\tthemeService,\n\t\t\tnew EditorScopedLayoutService(editor.getContainerDomNode(), codeEditorService),\n\t\t\tconfigurationService,\n\t\t);\n\n\t\t// Use the passed in code editor as host for the quick input widget\n\t\tconst contribution = QuickInputEditorContribution.get(editor);\n\t\tif (contribution) {\n\t\t\tconst widget = contribution.widget;\n\t\t\tthis.host = {\n\t\t\t\t_serviceBrand: undefined,\n\t\t\t\tget mainContainer() { return widget.getDomNode(); },\n\t\t\t\tgetContainer() { return widget.getDomNode(); },\n\t\t\t\twhenContainerStylesLoaded() { return undefined; },\n\t\t\t\tget containers() { return [widget.getDomNode()]; },\n\t\t\t\tget activeContainer() { return widget.getDomNode(); },\n\t\t\t\tget mainContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget activeContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget onDidLayoutMainContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutActiveContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutContainer() { return Event.map(editor.onDidLayoutChange, dimension => ({ container: widget.getDomNode(), dimension })); },\n\t\t\t\tget onDidChangeActiveContainer() { return Event.None; },\n\t\t\t\tget onDidAddContainer() { return Event.None; },\n\t\t\t\tget mainContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tget activeContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tfocus: () => editor.focus()\n\t\t\t};\n\t\t} else {\n\t\t\tthis.host = undefined;\n\t\t}\n\t}\n\n\tprotected override createController(): QuickInputController {\n\t\treturn super.createController(this.host);\n\t}\n}\n\nexport class StandaloneQuickInputService implements IQuickInputService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate mapEditorToService = new Map<ICodeEditor, EditorScopedQuickInputService>();\n\tprivate get activeService(): IQuickInputService {\n\t\tconst editor = this.codeEditorService.getFocusedCodeEditor();\n\t\tif (!editor) {\n\t\t\tthrow new Error('Quick input service needs a focused editor to work.');\n\t\t}\n\n\t\t// Find the quick input implementation for the focused\n\t\t// editor or create it lazily if not yet created\n\t\tlet quickInputService = this.mapEditorToService.get(editor);\n\t\tif (!quickInputService) {\n\t\t\tconst newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputService, editor);\n\t\t\tthis.mapEditorToService.set(editor, quickInputService);\n\n\t\t\tcreateSingleCallFunction(editor.onDidDispose)(() => {\n\t\t\t\tnewQuickInputService.dispose();\n\t\t\t\tthis.mapEditorToService.delete(editor);\n\t\t\t});\n\t\t}\n\n\t\treturn quickInputService;\n\t}\n\n\tget currentQuickInput() { return this.activeService.currentQuickInput; }\n\tget quickAccess() { return this.activeService.quickAccess; }\n\n\tconstructor(\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t\t@ICodeEditorService private readonly codeEditorService: ICodeEditorService\n\t) {\n\t}\n\n\tpick<T extends IQuickPickItem, O extends IPickOptions<T>>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[], options?: O, token: CancellationToken = CancellationToken.None): Promise<(O extends { canPickMany: true } ? T[] : T) | undefined> {\n\t\treturn (this.activeService as unknown as QuickInputController /* TS fail */).pick(picks, options, token);\n\t}\n\n\tinput(options?: IInputOptions | undefined, token?: CancellationToken | undefined): Promise<string | undefined> {\n\t\treturn this.activeService.input(options, token);\n\t}\n\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: true }): IQuickPick<T, { useSeparators: true }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options?: { useSeparators: boolean }): IQuickPick<T, { useSeparators: false }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: boolean } = { useSeparators: false }): IQuickPick<T, { useSeparators: boolean }> {\n\t\treturn this.activeService.createQuickPick(options);\n\t}\n\n\tcreateInputBox(): IInputBox {\n\t\treturn this.activeService.createInputBox();\n\t}\n\n\ttoggleHover(): void {\n\t\treturn this.activeService.toggleHover();\n\t}\n}\n\nexport class QuickInputEditorContribution implements IEditorContribution {\n\n\tstatic readonly ID = 'editor.controller.quickInput';\n\n\tstatic get(editor: ICodeEditor): QuickInputEditorContribution | null {\n\t\treturn editor.getContribution<QuickInputEditorContribution>(QuickInputEditorContribution.ID);\n\t}\n\n\treadonly widget: QuickInputEditorWidget;\n\n\tconstructor(private editor: ICodeEditor) {\n\t\tthis.widget = new QuickInputEditorWidget(this.editor);\n\t}\n\n\tdispose(): void {\n\t\tthis.widget.dispose();\n\t}\n}\n\nexport class QuickInputEditorWidget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.quickInputWidget';\n\n\tprivate domNode: HTMLElement;\n\n\tconstructor(private codeEditor: ICodeEditor) {\n\t\tthis.domNode = document.createElement('div');\n\n\t\tthis.codeEditor.addOverlayWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn QuickInputEditorWidget.ID;\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\tgetPosition(): IOverlayWidgetPosition | null {\n\t\treturn { preference: { top: 0, left: 0 } };\n\t}\n\n\tdispose(): void {\n\t\tthis.codeEditor.removeOverlayWidget(this);\n\t}\n}\n\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution, EditorContributionInstantiation.Lazy);\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 './standaloneQuickInput.css';\nimport { Event } from '../../../../base/common/event.js';\nimport { ICodeEditor, IOverlayWidget, IOverlayWidgetPosition } from '../../../browser/editorBrowser.js';\nimport { EditorContributionInstantiation, registerEditorContribution } from '../../../browser/editorExtensions.js';\nimport { IEditorContribution } from '../../../common/editorCommon.js';\nimport { IThemeService } from '../../../../platform/theme/common/themeService.js';\nimport { IQuickInputService, IQuickPickItem, IQuickPick, IInputBox, IPickOptions, QuickPickInput, IInputOptions } from '../../../../platform/quickinput/common/quickInput.js';\nimport { CancellationToken } from '../../../../base/common/cancellation.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { EditorScopedLayoutService } from '../standaloneLayoutService.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { QuickInputController, IQuickInputControllerHost } from '../../../../platform/quickinput/browser/quickInputController.js';\nimport { QuickInputService } from '../../../../platform/quickinput/browser/quickInputService.js';\nimport { createSingleCallFunction } from '../../../../base/common/functional.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\n\nclass EditorScopedQuickInputService extends QuickInputService {\n\n\tprivate host: IQuickInputControllerHost | undefined = undefined;\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@IInstantiationService instantiationService: IInstantiationService,\n\t\t@IContextKeyService contextKeyService: IContextKeyService,\n\t\t@IThemeService themeService: IThemeService,\n\t\t@ICodeEditorService codeEditorService: ICodeEditorService,\n\t\t@IConfigurationService configurationService: IConfigurationService,\n\t) {\n\t\tsuper(\n\t\t\tinstantiationService,\n\t\t\tcontextKeyService,\n\t\t\tthemeService,\n\t\t\tnew EditorScopedLayoutService(editor.getContainerDomNode(), codeEditorService),\n\t\t\tconfigurationService,\n\t\t);\n\n\t\t// Use the passed in code editor as host for the quick input widget\n\t\tconst contribution = QuickInputEditorContribution.get(editor);\n\t\tif (contribution) {\n\t\t\tconst widget = contribution.widget;\n\t\t\tthis.host = {\n\t\t\t\t_serviceBrand: undefined,\n\t\t\t\tget mainContainer() { return widget.getDomNode(); },\n\t\t\t\tgetContainer() { return widget.getDomNode(); },\n\t\t\t\twhenContainerStylesLoaded() { return undefined; },\n\t\t\t\tget containers() { return [widget.getDomNode()]; },\n\t\t\t\tget activeContainer() { return widget.getDomNode(); },\n\t\t\t\tget mainContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget activeContainerDimension() { return editor.getLayoutInfo(); },\n\t\t\t\tget onDidLayoutMainContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutActiveContainer() { return editor.onDidLayoutChange; },\n\t\t\t\tget onDidLayoutContainer() { return Event.map(editor.onDidLayoutChange, dimension => ({ container: widget.getDomNode(), dimension })); },\n\t\t\t\tget onDidChangeActiveContainer() { return Event.None; },\n\t\t\t\tget onDidAddContainer() { return Event.None; },\n\t\t\t\tget mainContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tget activeContainerOffset() { return { top: 0, quickPickTop: 0 }; },\n\t\t\t\tfocus: () => editor.focus()\n\t\t\t};\n\t\t} else {\n\t\t\tthis.host = undefined;\n\t\t}\n\t}\n\n\tprotected override createController(): QuickInputController {\n\t\treturn super.createController(this.host);\n\t}\n}\n\nexport class StandaloneQuickInputService implements IQuickInputService {\n\n\tdeclare readonly _serviceBrand: undefined;\n\n\tprivate mapEditorToService = new Map<ICodeEditor, EditorScopedQuickInputService>();\n\tprivate get activeService(): IQuickInputService {\n\t\tconst editor = this.codeEditorService.getFocusedCodeEditor();\n\t\tif (!editor) {\n\t\t\tthrow new Error('Quick input service needs a focused editor to work.');\n\t\t}\n\n\t\t// Find the quick input implementation for the focused\n\t\t// editor or create it lazily if not yet created\n\t\tlet quickInputService = this.mapEditorToService.get(editor);\n\t\tif (!quickInputService) {\n\t\t\tconst newQuickInputService = quickInputService = this.instantiationService.createInstance(EditorScopedQuickInputService, editor);\n\t\t\tthis.mapEditorToService.set(editor, quickInputService);\n\n\t\t\tcreateSingleCallFunction(editor.onDidDispose)(() => {\n\t\t\t\tnewQuickInputService.dispose();\n\t\t\t\tthis.mapEditorToService.delete(editor);\n\t\t\t});\n\t\t}\n\n\t\treturn quickInputService;\n\t}\n\n\tget currentQuickInput() { return this.activeService.currentQuickInput; }\n\tget quickAccess() { return this.activeService.quickAccess; }\n\n\tconstructor(\n\t\t@IInstantiationService private readonly instantiationService: IInstantiationService,\n\t\t@ICodeEditorService private readonly codeEditorService: ICodeEditorService\n\t) {\n\t}\n\n\tpick<T extends IQuickPickItem, O extends IPickOptions<T>>(picks: Promise<QuickPickInput<T>[]> | QuickPickInput<T>[], options?: O, token: CancellationToken = CancellationToken.None): Promise<(O extends { canPickMany: true } ? T[] : T) | undefined> {\n\t\treturn (this.activeService as unknown as QuickInputController /* TS fail */).pick(picks, options, token);\n\t}\n\n\tinput(options?: IInputOptions | undefined, token?: CancellationToken | undefined): Promise<string | undefined> {\n\t\treturn this.activeService.input(options, token);\n\t}\n\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: true }): IQuickPick<T, { useSeparators: true }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options?: { useSeparators: boolean }): IQuickPick<T, { useSeparators: false }>;\n\tcreateQuickPick<T extends IQuickPickItem>(options: { useSeparators: boolean } = { useSeparators: false }): IQuickPick<T, { useSeparators: boolean }> {\n\t\treturn this.activeService.createQuickPick(options);\n\t}\n\n\tcreateInputBox(): IInputBox {\n\t\treturn this.activeService.createInputBox();\n\t}\n\n\ttoggleHover(): void {\n\t\treturn this.activeService.toggleHover();\n\t}\n}\n\nexport class QuickInputEditorContribution implements IEditorContribution {\n\n\tstatic readonly ID = 'editor.controller.quickInput';\n\n\tstatic get(editor: ICodeEditor): QuickInputEditorContribution | null {\n\t\treturn editor.getContribution<QuickInputEditorContribution>(QuickInputEditorContribution.ID);\n\t}\n\n\treadonly widget: QuickInputEditorWidget;\n\n\tconstructor(private editor: ICodeEditor) {\n\t\tthis.widget = new QuickInputEditorWidget(this.editor);\n\t}\n\n\tdispose(): void {\n\t\tthis.widget.dispose();\n\t}\n}\n\nexport class QuickInputEditorWidget implements IOverlayWidget {\n\n\tprivate static readonly ID = 'editor.contrib.quickInputWidget';\n\n\tprivate domNode: HTMLElement;\n\n\tconstructor(private codeEditor: ICodeEditor) {\n\t\tthis.domNode = document.createElement('div');\n\n\t\tthis.codeEditor.addOverlayWidget(this);\n\t}\n\n\tgetId(): string {\n\t\treturn QuickInputEditorWidget.ID;\n\t}\n\n\tgetDomNode(): HTMLElement {\n\t\treturn this.domNode;\n\t}\n\n\tgetPosition(): IOverlayWidgetPosition | null {\n\t\treturn { preference: { top: 0, left: 0 } };\n\t}\n\n\tdispose(): void {\n\t\tthis.codeEditor.removeOverlayWidget(this);\n\t}\n}\n\nregisterEditorContribution(QuickInputEditorContribution.ID, QuickInputEditorContribution, EditorContributionInstantiation.Lazy);\n"]}
@@ -156,8 +156,8 @@ let ActionList = class ActionList extends Disposable {
156
156
  this._contextViewService = _contextViewService;
157
157
  this._keybindingService = _keybindingService;
158
158
  this._layoutService = _layoutService;
159
- this._actionLineHeight = 24;
160
- this._headerLineHeight = 26;
159
+ this._actionLineHeight = 28;
160
+ this._headerLineHeight = 28;
161
161
  this._separatorLineHeight = 8;
162
162
  this.cts = this._register(new CancellationTokenSource());
163
163
  this.domNode = document.createElement('div');