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

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 (336) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +30 -4
  18. package/esm/vs/base/browser/dom.js +1 -4
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/markdownRenderer.js +25 -11
  21. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  22. package/esm/vs/base/browser/ui/button/button.js +15 -8
  23. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  24. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  26. package/esm/vs/base/browser/ui/list/list.css +1 -0
  27. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  28. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  29. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  30. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  31. package/esm/vs/base/common/defaultAccount.js +6 -0
  32. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  33. package/esm/vs/base/common/equals.js +73 -24
  34. package/esm/vs/base/common/equals.js.map +1 -1
  35. package/esm/vs/base/common/event.js +14 -4
  36. package/esm/vs/base/common/event.js.map +1 -1
  37. package/esm/vs/base/common/iterator.js.map +1 -1
  38. package/esm/vs/base/common/keybindings.js +0 -8
  39. package/esm/vs/base/common/keybindings.js.map +1 -1
  40. package/esm/vs/base/common/lifecycle.js +2 -2
  41. package/esm/vs/base/common/lifecycle.js.map +1 -1
  42. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  43. package/esm/vs/base/common/observableInternal/index.js +1 -1
  44. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  45. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  46. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  47. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  48. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  49. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  50. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  51. package/esm/vs/base/common/product.js.map +1 -1
  52. package/esm/vs/base/common/strings.js +3 -1
  53. package/esm/vs/base/common/strings.js.map +1 -1
  54. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  55. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  56. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  57. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  58. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  59. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  60. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  61. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  62. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  64. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  66. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  67. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  69. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  70. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  71. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  72. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  73. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  74. package/esm/vs/editor/browser/view.js +11 -2
  75. package/esm/vs/editor/browser/view.js.map +1 -1
  76. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  77. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  78. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  79. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  80. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  81. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  82. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  83. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  84. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  85. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  86. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  87. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  88. package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
  89. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  90. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  91. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  92. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  93. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  94. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  95. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  96. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  97. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  98. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  99. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  100. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  101. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  102. package/esm/vs/editor/common/languages.js +2 -1
  103. package/esm/vs/editor/common/languages.js.map +1 -1
  104. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  105. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  106. package/esm/vs/editor/common/model/textModel.js +49 -30
  107. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  108. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  109. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  110. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  111. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  112. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  113. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  114. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  115. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  116. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  117. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  118. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  119. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  120. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  121. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  122. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
  123. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  124. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
  125. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  126. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
  127. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  128. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  129. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  130. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
  131. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  132. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  133. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  134. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  135. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  144. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  145. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  146. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  147. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  148. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  149. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  150. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  151. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  152. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  153. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
  154. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  155. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
  156. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  157. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
  158. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  159. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
  160. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  161. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
  162. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  163. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  164. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  165. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  166. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  167. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  168. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  169. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  170. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  171. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  172. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  173. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  174. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  175. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  176. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  177. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  178. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  179. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  180. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  181. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  182. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  183. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  184. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  185. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  186. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  187. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  188. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  189. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  190. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  191. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  192. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  193. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  194. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  195. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  196. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  197. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  213. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  214. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  215. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  216. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  217. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  218. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  219. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  220. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  221. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  222. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  223. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  224. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  225. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
  226. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  227. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  228. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
  229. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  230. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  231. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  232. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  233. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  234. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  235. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  236. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  237. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  238. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  239. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  240. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  241. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  242. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  243. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  244. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  245. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  246. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  247. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  248. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  249. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  250. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  251. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  252. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  253. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  254. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  255. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  256. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  257. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  258. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  259. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  260. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  261. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  262. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  263. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  264. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  265. package/esm/vs/editor/editor.api.d.ts +34 -3
  266. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  267. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  268. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  269. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  270. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  271. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  272. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  273. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  274. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  275. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  276. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  277. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  278. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  279. package/esm/vs/platform/actions/common/actions.js +11 -5
  280. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  281. package/esm/vs/platform/actions/common/menuService.js +2 -2
  282. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  283. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  284. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  285. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  286. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  287. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  288. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  289. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  290. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  291. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  292. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  293. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  294. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  295. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  296. package/esm/vs/platform/list/browser/listService.js +27 -27
  297. package/esm/vs/platform/log/common/log.js +1 -1
  298. package/esm/vs/platform/log/common/log.js.map +1 -1
  299. package/esm/vs/platform/markers/common/markerService.js +6 -6
  300. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  301. package/esm/vs/platform/markers/common/markers.js +6 -6
  302. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  303. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  304. package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
  305. package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
  306. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  307. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  308. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  309. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  310. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  311. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  312. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  313. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  314. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  315. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  316. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  317. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  318. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  319. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  320. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  321. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  322. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  323. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  324. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  325. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  326. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  327. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  328. package/esm/vs/platform/window/common/window.js +1 -1
  329. package/esm/vs/platform/window/common/window.js.map +1 -1
  330. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  331. package/monaco.d.ts +34 -3
  332. package/package.json +2 -2
  333. package/version.txt +1 -1
  334. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  335. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  336. package/esm/vs/platform/product/common/productService.js.map +0 -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 * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.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 { 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 { EnterOperation } from '../../../common/cursor/cursorTypeEditOperations.js';\nimport { TypeOperations } from '../../../common/cursor/cursorTypeOperations.js';\nimport { ICommand } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { CopyLinesCommand } from './copyLinesCommand.js';\nimport { MoveLinesCommand } from './moveLinesCommand.js';\nimport { SortLinesCommand } from './sortLinesCommand.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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): 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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true\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\ninterface TrimTrailingWhitespaceArgs {\n\treason?: 'auto-save';\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: TrimTrailingWhitespaceArgs): 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\tcanTriggerInlineEdits: true,\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.revealAllCursors(true);\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tpublic static readonly ID = 'editor.action.insertLineBefore';\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: InsertLineBeforeAction.ID,\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\tcanTriggerInlineEdits: true,\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\tpublic static readonly ID = 'editor.action.insertLineAfter';\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: InsertLineAfterAction.ID,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true\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\tcanTriggerInlineEdits: true\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true\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\tpublic static upperCaseWordMatcher = new BackwardsCompatibleRegExp('^\\\\p{Lu}+$', 'mu');\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\tcanTriggerInlineEdits: true,\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\t\tconst upperCaseWordMatcher = PascalCaseAction.upperCaseWordMatcher.get();\n\n\t\tif (!wordBoundary || !wordBoundaryToMaintain || !upperCaseWordMatcher) {\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 => word.split(wordBoundary)).flat();\n\n\t\treturn words.map(word => {\n\t\t\tconst normalizedWord = word.charAt(0).toLocaleUpperCase() + word.slice(1);\n\t\t\tconst isAllCaps = normalizedWord.length > 1 && upperCaseWordMatcher.test(normalizedWord);\n\t\t\tif (isAllCaps) {\n\t\t\t\treturn normalizedWord.charAt(0) + normalizedWord.slice(1).toLocaleLowerCase();\n\t\t\t}\n\t\t\treturn normalizedWord;\n\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\tcanTriggerInlineEdits: true,\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"]}
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 * as nls from '../../../../nls.js';\nimport { MenuId } from '../../../../platform/actions/common/actions.js';\nimport { IConfigurationService } from '../../../../platform/configuration/common/configuration.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.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 { 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 { EnterOperation } from '../../../common/cursor/cursorTypeEditOperations.js';\nimport { TypeOperations } from '../../../common/cursor/cursorTypeOperations.js';\nimport { ICommand } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ILanguageConfigurationService } from '../../../common/languages/languageConfigurationRegistry.js';\nimport { ITextModel } from '../../../common/model.js';\nimport { CopyLinesCommand } from './copyLinesCommand.js';\nimport { MoveLinesCommand } from './moveLinesCommand.js';\nimport { SortLinesCommand } from './sortLinesCommand.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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): 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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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 + 1\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\tcanTriggerInlineEdits: true\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\ninterface TrimTrailingWhitespaceArgs {\n\treason?: 'auto-save';\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: TrimTrailingWhitespaceArgs): 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\tcanTriggerInlineEdits: true,\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.revealAllCursors(true);\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tpublic static readonly ID = 'editor.action.insertLineBefore';\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: InsertLineBeforeAction.ID,\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\tcanTriggerInlineEdits: true,\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\tpublic static readonly ID = 'editor.action.insertLineAfter';\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: InsertLineAfterAction.ID,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true\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\tcanTriggerInlineEdits: true\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\tcanTriggerInlineEdits: true,\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\tcanTriggerInlineEdits: true\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\tpublic static upperCaseWordMatcher = new BackwardsCompatibleRegExp('^\\\\p{Lu}+$', 'mu');\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\tcanTriggerInlineEdits: true,\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\t\tconst upperCaseWordMatcher = PascalCaseAction.upperCaseWordMatcher.get();\n\n\t\tif (!wordBoundary || !wordBoundaryToMaintain || !upperCaseWordMatcher) {\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 => word.split(wordBoundary)).flat();\n\n\t\treturn words.map(word => {\n\t\t\tconst normalizedWord = word.charAt(0).toLocaleUpperCase() + word.slice(1);\n\t\t\tconst isAllCaps = normalizedWord.length > 1 && upperCaseWordMatcher.test(normalizedWord);\n\t\t\tif (isAllCaps) {\n\t\t\t\treturn normalizedWord.charAt(0) + normalizedWord.slice(1).toLocaleLowerCase();\n\t\t\t}\n\t\t\treturn normalizedWord;\n\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\tcanTriggerInlineEdits: true,\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"]}
@@ -299,7 +299,7 @@ export class LinkedEditingAction extends EditorAction {
299
299
  constructor() {
300
300
  super({
301
301
  id: 'editor.action.linkedEditing',
302
- label: nls.localize2(1283, "Start Linked Editing"),
302
+ label: nls.localize2(1289, "Start Linked Editing"),
303
303
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasRenameProvider),
304
304
  kbOpts: {
305
305
  kbExpr: EditorContextKeys.editorTextFocus,
@@ -360,7 +360,7 @@ function getLinkedEditingRanges(providers, model, position, token) {
360
360
  }
361
361
  }), result => !!result && arrays.isNonEmptyArray(result?.ranges));
362
362
  }
363
- export const editorLinkedEditingBackground = registerColor('editor.linkedEditingBackground', { dark: Color.fromHex('#f00').transparent(0.3), light: Color.fromHex('#f00').transparent(0.3), hcDark: Color.fromHex('#f00').transparent(0.3), hcLight: Color.white }, nls.localize(1282, 'Background color when the editor auto renames on type.'));
363
+ export const editorLinkedEditingBackground = registerColor('editor.linkedEditingBackground', { dark: Color.fromHex('#f00').transparent(0.3), light: Color.fromHex('#f00').transparent(0.3), hcDark: Color.fromHex('#f00').transparent(0.3), hcLight: Color.white }, nls.localize(1288, 'Background color when the editor auto renames on type.'));
364
364
  registerModelAndPositionCommand('_executeLinkedEditingProvider', (_accessor, model, position) => {
365
365
  const { linkedEditingRangeProvider } = _accessor.get(ILanguageFeaturesService);
366
366
  return getLinkedEditingRanges(linkedEditingRangeProvider, model, position, CancellationToken.None);
@@ -220,10 +220,10 @@ let LinkDetector = class LinkDetector extends Disposable {
220
220
  const messageOrError = err instanceof Error ? err.message : err;
221
221
  // different error cases
222
222
  if (messageOrError === 'invalid') {
223
- this.notificationService.warn(nls.localize(1284, 'Failed to open this link because it is not well-formed: {0}', link.url.toString()));
223
+ this.notificationService.warn(nls.localize(1290, 'Failed to open this link because it is not well-formed: {0}', link.url.toString()));
224
224
  }
225
225
  else if (messageOrError === 'missing') {
226
- this.notificationService.warn(nls.localize(1285, 'Failed to open this link because its target is missing.'));
226
+ this.notificationService.warn(nls.localize(1291, 'Failed to open this link because its target is missing.'));
227
227
  }
228
228
  else {
229
229
  onUnexpectedError(err);
@@ -317,15 +317,15 @@ function getHoverMessage(link, useMetaKey) {
317
317
  const label = link.tooltip
318
318
  ? link.tooltip
319
319
  : executeCmd
320
- ? nls.localize(1286, 'Execute command')
321
- : nls.localize(1287, 'Follow link');
320
+ ? nls.localize(1292, 'Execute command')
321
+ : nls.localize(1293, 'Follow link');
322
322
  const kb = useMetaKey
323
323
  ? platform.isMacintosh
324
- ? nls.localize(1288, "cmd + click")
325
- : nls.localize(1289, "ctrl + click")
324
+ ? nls.localize(1294, "cmd + click")
325
+ : nls.localize(1295, "ctrl + click")
326
326
  : platform.isMacintosh
327
- ? nls.localize(1290, "option + click")
328
- : nls.localize(1291, "alt + click");
327
+ ? nls.localize(1296, "option + click")
328
+ : nls.localize(1297, "alt + click");
329
329
  if (link.url) {
330
330
  let nativeLabel = '';
331
331
  if (/^command:/i.test(link.url.toString())) {
@@ -333,7 +333,7 @@ function getHoverMessage(link, useMetaKey) {
333
333
  const match = link.url.toString().match(/^command:([^?#]+)/);
334
334
  if (match) {
335
335
  const commandId = match[1];
336
- nativeLabel = nls.localize(1292, "Execute command {0}", commandId);
336
+ nativeLabel = nls.localize(1298, "Execute command {0}", commandId);
337
337
  }
338
338
  }
339
339
  const hoverMessage = new MarkdownString('', true)
@@ -349,7 +349,7 @@ class OpenLinkAction extends EditorAction {
349
349
  constructor() {
350
350
  super({
351
351
  id: 'editor.action.openLink',
352
- label: nls.localize2(1293, "Open Link"),
352
+ label: nls.localize2(1299, "Open Link"),
353
353
  precondition: undefined
354
354
  });
355
355
  }
@@ -28,7 +28,7 @@ import * as dom from '../../../../base/browser/dom.js';
28
28
  let MessageController = class MessageController {
29
29
  static { MessageController_1 = this; }
30
30
  static { this.ID = 'editor.contrib.messageController'; }
31
- static { this.MESSAGE_VISIBLE = new RawContextKey('messageVisible', false, nls.localize(1294, 'Whether the editor is currently showing an inline message')); }
31
+ static { this.MESSAGE_VISIBLE = new RawContextKey('messageVisible', false, nls.localize(1300, 'Whether the editor is currently showing an inline message')); }
32
32
  static get(editor) {
33
33
  return editor.getContribution(MessageController_1.ID);
34
34
  }