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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) 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 +34 -6
  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/actionbar/actionViewItems.js.map +1 -1
  23. package/esm/vs/base/browser/ui/button/button.js +15 -8
  24. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  26. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  27. package/esm/vs/base/browser/ui/findinput/findInput.js +6 -1
  28. package/esm/vs/base/browser/ui/findinput/findInput.js.map +1 -1
  29. package/esm/vs/base/browser/ui/inputbox/inputBox.js +17 -1
  30. package/esm/vs/base/browser/ui/inputbox/inputBox.js.map +1 -1
  31. package/esm/vs/base/browser/ui/list/list.css +1 -0
  32. package/esm/vs/base/browser/ui/toggle/toggle.js +78 -6
  33. package/esm/vs/base/browser/ui/toggle/toggle.js.map +1 -1
  34. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  35. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  36. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  37. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  38. package/esm/vs/base/common/defaultAccount.js +6 -0
  39. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  40. package/esm/vs/base/common/equals.js +73 -24
  41. package/esm/vs/base/common/equals.js.map +1 -1
  42. package/esm/vs/base/common/event.js +14 -4
  43. package/esm/vs/base/common/event.js.map +1 -1
  44. package/esm/vs/base/common/iterator.js.map +1 -1
  45. package/esm/vs/base/common/keybindings.js +0 -8
  46. package/esm/vs/base/common/keybindings.js.map +1 -1
  47. package/esm/vs/base/common/lifecycle.js +2 -2
  48. package/esm/vs/base/common/lifecycle.js.map +1 -1
  49. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  50. package/esm/vs/base/common/observableInternal/index.js +1 -1
  51. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  52. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  53. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  54. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  55. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  56. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  57. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  58. package/esm/vs/base/common/product.js.map +1 -1
  59. package/esm/vs/base/common/strings.js +3 -1
  60. package/esm/vs/base/common/strings.js.map +1 -1
  61. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  62. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  64. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  66. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  67. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  69. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  70. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  71. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  72. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  73. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  74. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  75. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  76. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  77. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  78. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  79. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  80. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  81. package/esm/vs/editor/browser/services/editorWorkerService.js +6 -2
  82. package/esm/vs/editor/browser/services/editorWorkerService.js.map +1 -1
  83. package/esm/vs/editor/browser/view.js +11 -2
  84. package/esm/vs/editor/browser/view.js.map +1 -1
  85. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  86. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  87. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  88. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  89. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  90. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  91. package/esm/vs/editor/common/config/editorConfigurationSchema.js +49 -47
  92. package/esm/vs/editor/common/config/editorConfigurationSchema.js.map +1 -1
  93. package/esm/vs/editor/common/config/editorOptions.js +410 -410
  94. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  95. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  96. package/esm/vs/editor/common/core/editorColorRegistry.js +69 -69
  97. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  98. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  99. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  100. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  101. package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
  102. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  103. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  104. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  105. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  106. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  107. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  108. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  109. package/esm/vs/editor/common/editorContextKeys.js +47 -47
  110. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  111. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  112. package/esm/vs/editor/common/languages/modesRegistry.js +1 -1
  113. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  114. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  115. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  116. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  117. package/esm/vs/editor/common/languages.js +58 -57
  118. package/esm/vs/editor/common/languages.js.map +1 -1
  119. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  120. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  121. package/esm/vs/editor/common/model/editStack.js +1 -1
  122. package/esm/vs/editor/common/model/textModel.js +49 -30
  123. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  124. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  125. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  126. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  127. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  128. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  129. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  130. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  131. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  132. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  133. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  134. package/esm/vs/editor/common/standaloneStrings.js +11 -11
  135. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  136. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  137. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  138. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  139. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +3 -3
  140. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  141. package/esm/vs/editor/contrib/anchorSelect/browser/anchorSelect.js +6 -6
  142. package/esm/vs/editor/contrib/bracketMatching/browser/bracketMatching.js +6 -6
  143. package/esm/vs/editor/contrib/caretOperations/browser/caretOperations.js +2 -2
  144. package/esm/vs/editor/contrib/caretOperations/browser/transpose.js +1 -1
  145. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +71 -53
  146. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  147. package/esm/vs/editor/contrib/codeAction/browser/codeAction.js +1 -1
  148. package/esm/vs/editor/contrib/codeAction/browser/codeActionCommands.js +29 -29
  149. package/esm/vs/editor/contrib/codeAction/browser/codeActionContributions.js +3 -3
  150. package/esm/vs/editor/contrib/codeAction/browser/codeActionController.js +3 -3
  151. package/esm/vs/editor/contrib/codeAction/browser/codeActionMenu.js +8 -8
  152. package/esm/vs/editor/contrib/codeAction/browser/lightBulbWidget.js +9 -9
  153. package/esm/vs/editor/contrib/codelens/browser/codelensController.js +2 -2
  154. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerCloseButton.js +1 -1
  155. package/esm/vs/editor/contrib/colorPicker/browser/colorPickerParts/colorPickerHeader.js +1 -1
  156. package/esm/vs/editor/contrib/colorPicker/browser/hoverColorPicker/hoverColorPickerParticipant.js +1 -1
  157. package/esm/vs/editor/contrib/colorPicker/browser/standaloneColorPicker/standaloneColorPickerActions.js +7 -7
  158. package/esm/vs/editor/contrib/comment/browser/comment.js +6 -6
  159. package/esm/vs/editor/contrib/contextmenu/browser/contextmenu.js +10 -10
  160. package/esm/vs/editor/contrib/cursorUndo/browser/cursorUndo.js +2 -2
  161. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteContribution.js +4 -4
  162. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +23 -10
  163. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  164. package/esm/vs/editor/contrib/dropOrPasteInto/browser/defaultProviders.js +8 -8
  165. package/esm/vs/editor/contrib/dropOrPasteInto/browser/dropIntoEditorController.js +3 -3
  166. package/esm/vs/editor/contrib/dropOrPasteInto/browser/postEditWidget.js +2 -2
  167. package/esm/vs/editor/contrib/editorState/browser/keybindingCancellation.js +1 -1
  168. package/esm/vs/editor/contrib/find/browser/findController.js +16 -16
  169. package/esm/vs/editor/contrib/find/browser/findWidget.js +26 -26
  170. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  171. package/esm/vs/editor/contrib/folding/browser/folding.js +20 -20
  172. package/esm/vs/editor/contrib/folding/browser/folding.js.map +1 -1
  173. package/esm/vs/editor/contrib/folding/browser/foldingDecorations.js +9 -9
  174. package/esm/vs/editor/contrib/fontZoom/browser/fontZoom.js +3 -3
  175. package/esm/vs/editor/contrib/format/browser/formatActions.js +2 -2
  176. package/esm/vs/editor/contrib/gotoError/browser/gotoError.js +8 -8
  177. package/esm/vs/editor/contrib/gotoError/browser/gotoErrorWidget.js +14 -14
  178. package/esm/vs/editor/contrib/gotoSymbol/browser/goToCommands.js +39 -39
  179. package/esm/vs/editor/contrib/gotoSymbol/browser/link/goToDefinitionAtPosition.js +1 -1
  180. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesController.js +3 -3
  181. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesTree.js +3 -3
  182. package/esm/vs/editor/contrib/gotoSymbol/browser/peek/referencesWidget.js +3 -3
  183. package/esm/vs/editor/contrib/gotoSymbol/browser/referencesModel.js +8 -8
  184. package/esm/vs/editor/contrib/gotoSymbol/browser/symbolNavigation.js +3 -3
  185. package/esm/vs/editor/contrib/gpu/browser/gpuActions.js +4 -4
  186. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  187. package/esm/vs/editor/contrib/hover/browser/hoverActionIds.js +2 -2
  188. package/esm/vs/editor/contrib/hover/browser/hoverActions.js +24 -24
  189. package/esm/vs/editor/contrib/hover/browser/hoverCopyButton.js +2 -2
  190. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +10 -10
  191. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  192. package/esm/vs/editor/contrib/hover/browser/markerHoverParticipant.js +5 -5
  193. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  194. package/esm/vs/editor/contrib/indentation/browser/indentation.js +20 -20
  195. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  196. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  197. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsHover.js +8 -8
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +50 -21
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  213. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  214. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  215. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  216. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
  217. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  218. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
  219. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  220. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
  221. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  222. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
  223. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  224. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
  225. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  226. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  227. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  228. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  229. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  230. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  231. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  232. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  233. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  234. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  235. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  236. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  237. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  238. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  239. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  240. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  241. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  242. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  243. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  244. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  245. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  246. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  247. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  248. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  249. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  250. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  251. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  252. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  253. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  254. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  255. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  256. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  257. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  258. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  259. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  260. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  261. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  262. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  263. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  264. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  265. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  266. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  267. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  268. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  269. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  270. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  271. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  272. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  273. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  274. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  275. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  276. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  277. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  278. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  279. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  280. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  281. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  282. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  283. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  284. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  285. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  286. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  287. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  288. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +25 -27
  289. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js.map +1 -1
  290. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  291. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  292. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
  293. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  294. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  295. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  296. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  297. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  298. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  299. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  300. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  301. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  302. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  303. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  304. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  305. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  306. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  307. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  308. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  309. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  310. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  311. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  312. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  313. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  314. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  315. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  316. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  317. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  318. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  319. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  320. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  321. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  322. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  323. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  324. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  325. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  326. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  327. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  328. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  329. package/esm/vs/editor/editor.api.d.ts +34 -3
  330. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  331. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  332. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  333. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  334. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  335. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  336. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  337. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  338. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  339. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  340. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  341. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  342. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  343. package/esm/vs/platform/actions/common/actions.js +11 -5
  344. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  345. package/esm/vs/platform/actions/common/menuService.js +2 -2
  346. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  347. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  348. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  349. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  350. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  351. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  352. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  353. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  354. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  355. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  356. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  357. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  358. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  359. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  360. package/esm/vs/platform/list/browser/listService.js +27 -27
  361. package/esm/vs/platform/log/common/log.js +1 -1
  362. package/esm/vs/platform/log/common/log.js.map +1 -1
  363. package/esm/vs/platform/markers/common/markerService.js +6 -6
  364. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  365. package/esm/vs/platform/markers/common/markers.js +6 -6
  366. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  367. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  368. package/esm/vs/platform/quickinput/browser/media/quickInput.css +45 -7
  369. package/esm/vs/platform/quickinput/browser/quickInput.js +51 -15
  370. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  371. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  372. package/esm/vs/platform/quickinput/browser/quickInputBox.js +13 -1
  373. package/esm/vs/platform/quickinput/browser/quickInputBox.js.map +1 -1
  374. package/esm/vs/platform/quickinput/browser/quickInputController.js +22 -12
  375. package/esm/vs/platform/quickinput/browser/quickInputController.js.map +1 -1
  376. package/esm/vs/platform/quickinput/browser/quickInputList.js +17 -12
  377. package/esm/vs/platform/quickinput/browser/quickInputList.js.map +1 -1
  378. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +36 -8
  379. package/esm/vs/platform/quickinput/browser/quickInputUtils.js.map +1 -1
  380. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  381. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js +3 -3
  382. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeController.js.map +1 -1
  383. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js +8 -4
  384. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeRenderer.js.map +1 -1
  385. package/esm/vs/platform/quickinput/common/quickInput.js.map +1 -1
  386. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  387. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  388. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  389. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  390. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  391. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  392. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  393. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  394. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  395. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  396. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  397. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  398. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  399. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  400. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  401. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  402. package/esm/vs/platform/window/common/window.js +1 -1
  403. package/esm/vs/platform/window/common/window.js.map +1 -1
  404. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  405. package/monaco.d.ts +34 -3
  406. package/package.json +2 -2
  407. package/version.txt +1 -1
  408. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  409. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  410. package/esm/vs/platform/product/common/productService.js.map +0 -1
@@ -5,15 +5,12 @@
5
5
  import * as browser from '../../../../base/browser/browser.js';
6
6
  import { getActiveDocument, getActiveWindow } from '../../../../base/browser/dom.js';
7
7
  import * as platform from '../../../../base/common/platform.js';
8
- import { StopWatch } from '../../../../base/common/stopwatch.js';
9
8
  import * as nls from '../../../../nls.js';
10
9
  import { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';
11
10
  import { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';
12
11
  import { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';
13
12
  import { ILogService } from '../../../../platform/log/common/log.js';
14
- import { IProductService } from '../../../../platform/product/common/productService.js';
15
- import { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';
16
- import { CopyOptions, InMemoryClipboardMetadataManager } from '../../../browser/controller/editContext/clipboardUtils.js';
13
+ import { CopyOptions, generateDataToCopyAndStoreInMemory, InMemoryClipboardMetadataManager, PasteOptions } from '../../../browser/controller/editContext/clipboardUtils.js';
17
14
  import { NativeEditContextRegistry } from '../../../browser/controller/editContext/native/nativeEditContextRegistry.js';
18
15
  import { EditorAction, MultiCommand, registerEditorAction } from '../../../browser/editorExtensions.js';
19
16
  import { ICodeEditorService } from '../../../browser/services/codeEditorService.js';
@@ -44,23 +41,23 @@ export const CutAction = supportsCut ? registerCommand(new MultiCommand({
44
41
  menuOpts: [{
45
42
  menuId: MenuId.MenubarEditMenu,
46
43
  group: '2_ccp',
47
- title: nls.localize(819, "Cu&&t"),
44
+ title: nls.localize(820, "Cu&&t"),
48
45
  order: 1
49
46
  }, {
50
47
  menuId: MenuId.EditorContext,
51
48
  group: CLIPBOARD_CONTEXT_MENU_GROUP,
52
- title: nls.localize(820, "Cut"),
49
+ title: nls.localize(821, "Cut"),
53
50
  when: EditorContextKeys.writable,
54
51
  order: 1,
55
52
  }, {
56
53
  menuId: MenuId.CommandPalette,
57
54
  group: '',
58
- title: nls.localize(821, "Cut"),
55
+ title: nls.localize(822, "Cut"),
59
56
  order: 1
60
57
  }, {
61
58
  menuId: MenuId.SimpleEditorContext,
62
59
  group: CLIPBOARD_CONTEXT_MENU_GROUP,
63
- title: nls.localize(822, "Cut"),
60
+ title: nls.localize(823, "Cut"),
64
61
  when: EditorContextKeys.writable,
65
62
  order: 1,
66
63
  }]
@@ -79,29 +76,29 @@ export const CopyAction = supportsCopy ? registerCommand(new MultiCommand({
79
76
  menuOpts: [{
80
77
  menuId: MenuId.MenubarEditMenu,
81
78
  group: '2_ccp',
82
- title: nls.localize(823, "&&Copy"),
79
+ title: nls.localize(824, "&&Copy"),
83
80
  order: 2
84
81
  }, {
85
82
  menuId: MenuId.EditorContext,
86
83
  group: CLIPBOARD_CONTEXT_MENU_GROUP,
87
- title: nls.localize(824, "Copy"),
84
+ title: nls.localize(825, "Copy"),
88
85
  order: 2,
89
86
  }, {
90
87
  menuId: MenuId.CommandPalette,
91
88
  group: '',
92
- title: nls.localize(825, "Copy"),
89
+ title: nls.localize(826, "Copy"),
93
90
  order: 1
94
91
  }, {
95
92
  menuId: MenuId.SimpleEditorContext,
96
93
  group: CLIPBOARD_CONTEXT_MENU_GROUP,
97
- title: nls.localize(826, "Copy"),
94
+ title: nls.localize(827, "Copy"),
98
95
  order: 2,
99
96
  }]
100
97
  })) : undefined;
101
- MenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: nls.localize2(831, "Copy As"), group: '2_ccp', order: 3 });
102
- MenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextCopy, title: nls.localize2(832, "Copy As"), group: CLIPBOARD_CONTEXT_MENU_GROUP, order: 3 });
103
- MenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextShare, title: nls.localize2(833, "Share"), group: '11_share', order: -1, when: ContextKeyExpr.and(ContextKeyExpr.notEquals('resourceScheme', 'output'), EditorContextKeys.editorTextFocus) });
104
- MenuRegistry.appendMenuItem(MenuId.ExplorerContext, { submenu: MenuId.ExplorerContextShare, title: nls.localize2(834, "Share"), group: '11_share', order: -1 });
98
+ MenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: nls.localize2(832, "Copy As"), group: '2_ccp', order: 3 });
99
+ MenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextCopy, title: nls.localize2(833, "Copy As"), group: CLIPBOARD_CONTEXT_MENU_GROUP, order: 3 });
100
+ MenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextShare, title: nls.localize2(834, "Share"), group: '11_share', order: -1, when: ContextKeyExpr.and(ContextKeyExpr.notEquals('resourceScheme', 'output'), EditorContextKeys.editorTextFocus) });
101
+ MenuRegistry.appendMenuItem(MenuId.ExplorerContext, { submenu: MenuId.ExplorerContextShare, title: nls.localize2(835, "Share"), group: '11_share', order: -1 });
105
102
  export const PasteAction = supportsPaste ? registerCommand(new MultiCommand({
106
103
  id: 'editor.action.clipboardPasteAction',
107
104
  precondition: undefined,
@@ -117,23 +114,23 @@ export const PasteAction = supportsPaste ? registerCommand(new MultiCommand({
117
114
  menuOpts: [{
118
115
  menuId: MenuId.MenubarEditMenu,
119
116
  group: '2_ccp',
120
- title: nls.localize(827, "&&Paste"),
117
+ title: nls.localize(828, "&&Paste"),
121
118
  order: 4
122
119
  }, {
123
120
  menuId: MenuId.EditorContext,
124
121
  group: CLIPBOARD_CONTEXT_MENU_GROUP,
125
- title: nls.localize(828, "Paste"),
122
+ title: nls.localize(829, "Paste"),
126
123
  when: EditorContextKeys.writable,
127
124
  order: 4,
128
125
  }, {
129
126
  menuId: MenuId.CommandPalette,
130
127
  group: '',
131
- title: nls.localize(829, "Paste"),
128
+ title: nls.localize(830, "Paste"),
132
129
  order: 1
133
130
  }, {
134
131
  menuId: MenuId.SimpleEditorContext,
135
132
  group: CLIPBOARD_CONTEXT_MENU_GROUP,
136
- title: nls.localize(830, "Paste"),
133
+ title: nls.localize(831, "Paste"),
137
134
  when: EditorContextKeys.writable,
138
135
  order: 4,
139
136
  }]
@@ -142,7 +139,7 @@ class ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {
142
139
  constructor() {
143
140
  super({
144
141
  id: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',
145
- label: nls.localize2(835, "Copy with Syntax Highlighting"),
142
+ label: nls.localize2(836, "Copy with Syntax Highlighting"),
146
143
  precondition: undefined,
147
144
  kbOpts: {
148
145
  kbExpr: EditorContextKeys.textInputFocus,
@@ -153,6 +150,7 @@ class ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {
153
150
  }
154
151
  run(accessor, editor) {
155
152
  const logService = accessor.get(ILogService);
153
+ const clipboardService = accessor.get(IClipboardService);
156
154
  logService.trace('ExecCommandCopyWithSyntaxHighlightingAction#run');
157
155
  if (!editor.hasModel()) {
158
156
  return;
@@ -164,11 +162,48 @@ class ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {
164
162
  CopyOptions.forceCopyWithSyntaxHighlighting = true;
165
163
  editor.focus();
166
164
  logService.trace('ExecCommandCopyWithSyntaxHighlightingAction (before execCommand copy)');
167
- editor.getContainerDomNode().ownerDocument.execCommand('copy');
165
+ executeClipboardCopyWithWorkaround(editor, clipboardService);
168
166
  logService.trace('ExecCommandCopyWithSyntaxHighlightingAction (after execCommand copy)');
169
167
  CopyOptions.forceCopyWithSyntaxHighlighting = false;
170
168
  }
171
169
  }
170
+ function executeClipboardCopyWithWorkaround(editor, clipboardService) {
171
+ // !!!!!
172
+ // This is a workaround for what we think is an Electron bug where
173
+ // execCommand('copy') does not always work (it does not fire a clipboard event)
174
+ // We will use this as a signal that we have executed a copy command
175
+ // !!!!!
176
+ CopyOptions.electronBugWorkaroundCopyEventHasFired = false;
177
+ editor.getContainerDomNode().ownerDocument.execCommand('copy');
178
+ if (platform.isNative && CopyOptions.electronBugWorkaroundCopyEventHasFired === false) {
179
+ // We have encountered the Electron bug!
180
+ // As a workaround, we will write (only the plaintext data) to the clipboard in a different way
181
+ // We will use the clipboard service (which in the native case will go to electron's clipboard API)
182
+ const { dataToCopy } = generateDataToCopyAndStoreInMemory(editor._getViewModel(), editor.getOptions(), undefined, browser.isFirefox);
183
+ clipboardService.writeText(dataToCopy.text);
184
+ }
185
+ }
186
+ async function pasteWithNavigatorAPI(editor, clipboardService, logService) {
187
+ const clipboardText = await clipboardService.readText();
188
+ if (clipboardText !== '') {
189
+ const metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);
190
+ let pasteOnNewLine = false;
191
+ let multicursorText = null;
192
+ let mode = null;
193
+ if (metadata) {
194
+ pasteOnNewLine = (editor.getOption(45 /* EditorOption.emptySelectionClipboard */) && !!metadata.isFromEmptySelection);
195
+ multicursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);
196
+ mode = metadata.mode;
197
+ }
198
+ logService.trace('pasteWithNavigatorAPI with id : ', metadata?.id, ', clipboardText.length : ', clipboardText.length);
199
+ editor.trigger('keyboard', "paste" /* Handler.Paste */, {
200
+ text: clipboardText,
201
+ pasteOnNewLine,
202
+ multicursorText,
203
+ mode
204
+ });
205
+ }
206
+ }
172
207
  function registerExecCommandImpl(target, browserCommand) {
173
208
  if (!target) {
174
209
  return;
@@ -176,10 +211,11 @@ function registerExecCommandImpl(target, browserCommand) {
176
211
  // 1. handle case when focus is in editor.
177
212
  target.addImplementation(10000, 'code-editor', (accessor, args) => {
178
213
  const logService = accessor.get(ILogService);
214
+ const clipboardService = accessor.get(IClipboardService);
179
215
  logService.trace('registerExecCommandImpl (addImplementation code-editor for : ', browserCommand, ')');
180
216
  // Only if editor text focus (i.e. not if editor has widget focus).
181
217
  const focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();
182
- if (focusedEditor && focusedEditor.hasTextFocus()) {
218
+ if (focusedEditor && focusedEditor.hasTextFocus() && focusedEditor.hasModel()) {
183
219
  // Do not execute if there is no selection and empty selection clipboard is off
184
220
  const emptySelectionClipboard = focusedEditor.getOption(45 /* EditorOption.emptySelectionClipboard */);
185
221
  const selection = focusedEditor.getSelection();
@@ -191,14 +227,19 @@ function registerExecCommandImpl(target, browserCommand) {
191
227
  logCopyCommand(focusedEditor);
192
228
  // execCommand(copy) works for edit context, but not execCommand(cut).
193
229
  logService.trace('registerExecCommandImpl (before execCommand copy)');
194
- focusedEditor.getContainerDomNode().ownerDocument.execCommand('copy');
230
+ executeClipboardCopyWithWorkaround(focusedEditor, clipboardService);
195
231
  focusedEditor.trigger(undefined, "cut" /* Handler.Cut */, undefined);
196
232
  logService.trace('registerExecCommandImpl (after execCommand copy)');
197
233
  }
198
234
  else {
199
235
  logCopyCommand(focusedEditor);
200
236
  logService.trace('registerExecCommandImpl (before execCommand ' + browserCommand + ')');
201
- focusedEditor.getContainerDomNode().ownerDocument.execCommand(browserCommand);
237
+ if (browserCommand === 'copy') {
238
+ executeClipboardCopyWithWorkaround(focusedEditor, clipboardService);
239
+ }
240
+ else {
241
+ focusedEditor.getContainerDomNode().ownerDocument.execCommand(browserCommand);
242
+ }
202
243
  logService.trace('registerExecCommandImpl (after execCommand ' + browserCommand + ')');
203
244
  }
204
245
  return true;
@@ -233,8 +274,6 @@ if (PasteAction) {
233
274
  logService.trace('registerExecCommandImpl (addImplementation code-editor for : paste)');
234
275
  const codeEditorService = accessor.get(ICodeEditorService);
235
276
  const clipboardService = accessor.get(IClipboardService);
236
- const telemetryService = accessor.get(ITelemetryService);
237
- const productService = accessor.get(IProductService);
238
277
  // Only if editor text focus (i.e. not if editor has widget focus).
239
278
  const focusedEditor = codeEditorService.getFocusedCodeEditor();
240
279
  if (focusedEditor && focusedEditor.hasModel() && focusedEditor.hasTextFocus()) {
@@ -246,17 +285,16 @@ if (PasteAction) {
246
285
  nativeEditContext.onWillPaste();
247
286
  }
248
287
  }
249
- const sw = StopWatch.create(true);
250
288
  logService.trace('registerExecCommandImpl (before triggerPaste)');
289
+ PasteOptions.electronBugWorkaroundPasteEventHasFired = false;
251
290
  const triggerPaste = clipboardService.triggerPaste(getActiveWindow().vscodeWindowId);
252
291
  if (triggerPaste) {
253
292
  logService.trace('registerExecCommandImpl (triggerPaste defined)');
254
293
  return triggerPaste.then(async () => {
255
- logService.trace('registerExecCommandImpl (after triggerPaste)');
256
- if (productService.quality !== 'stable') {
257
- const duration = sw.elapsed();
258
- telemetryService.publicLog2('editorAsyncPaste', { duration });
294
+ if (PasteOptions.electronBugWorkaroundPasteEventHasFired === false) {
295
+ return pasteWithNavigatorAPI(focusedEditor, clipboardService, logService);
259
296
  }
297
+ logService.trace('registerExecCommandImpl (after triggerPaste)');
260
298
  return CopyPasteController.get(focusedEditor)?.finishedPaste() ?? Promise.resolve();
261
299
  });
262
300
  }
@@ -266,27 +304,7 @@ if (PasteAction) {
266
304
  if (platform.isWeb) {
267
305
  logService.trace('registerExecCommandImpl (Paste handling on web)');
268
306
  // Use the clipboard service if document.execCommand('paste') was not successful
269
- return (async () => {
270
- const clipboardText = await clipboardService.readText();
271
- if (clipboardText !== '') {
272
- const metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);
273
- let pasteOnNewLine = false;
274
- let multicursorText = null;
275
- let mode = null;
276
- if (metadata) {
277
- pasteOnNewLine = (focusedEditor.getOption(45 /* EditorOption.emptySelectionClipboard */) && !!metadata.isFromEmptySelection);
278
- multicursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);
279
- mode = metadata.mode;
280
- }
281
- logService.trace('registerExecCommandImpl (clipboardText.length : ', clipboardText.length, ' id : ', metadata?.id, ')');
282
- focusedEditor.trigger('keyboard', "paste" /* Handler.Paste */, {
283
- text: clipboardText,
284
- pasteOnNewLine,
285
- multicursorText,
286
- mode
287
- });
288
- }
289
- })();
307
+ return pasteWithNavigatorAPI(focusedEditor, clipboardService, logService);
290
308
  }
291
309
  return true;
292
310
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/clipboard/browser/clipboard.ts"],"names":[],"mappings":"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","file":"clipboard.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 * as browser from '../../../../base/browser/browser.js';\nimport { getActiveDocument, getActiveWindow } from '../../../../base/browser/dom.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { IProductService } from '../../../../platform/product/common/productService.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { CopyOptions, InMemoryClipboardMetadataManager } from '../../../browser/controller/editContext/clipboardUtils.js';\nimport { NativeEditContextRegistry } from '../../../browser/controller/editContext/native/nativeEditContextRegistry.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { Command, EditorAction, MultiCommand, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Handler } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CopyPasteController } from '../../dropOrPasteInto/browser/copyPasteController.js';\n\nconst CLIPBOARD_CONTEXT_MENU_GROUP = '9_cutcopypaste';\n\nconst supportsCut = (platform.isNative || document.queryCommandSupported('cut'));\nconst supportsCopy = (platform.isNative || document.queryCommandSupported('copy'));\n// Firefox only supports navigator.clipboard.readText() in browser extensions.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText#Browser_compatibility\n// When loading over http, navigator.clipboard can be undefined. See https://github.com/microsoft/monaco-editor/issues/2313\nconst supportsPaste = (typeof navigator.clipboard === 'undefined' || browser.isFirefox) ? document.queryCommandSupported('paste') : true;\n\nfunction registerCommand<T extends Command>(command: T): T {\n\tcommand.register();\n\treturn command;\n}\n\nexport const CutAction = supportsCut ? registerCommand(new MultiCommand({\n\tid: 'editor.action.clipboardCutAction',\n\tprecondition: undefined,\n\tkbOpts: (\n\t\t// Do not bind cut keybindings in the browser,\n\t\t// since browsers do that for us and it avoids security prompts\n\t\tplatform.isNative ? {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyX,\n\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyX, secondary: [KeyMod.Shift | KeyCode.Delete] },\n\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t} : undefined\n\t),\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '2_ccp',\n\t\ttitle: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, \"Cu&&t\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.EditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 1,\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 1,\n\t}]\n})) : undefined;\n\nexport const CopyAction = supportsCopy ? registerCommand(new MultiCommand({\n\tid: 'editor.action.clipboardCopyAction',\n\tprecondition: undefined,\n\tkbOpts: (\n\t\t// Do not bind copy keybindings in the browser,\n\t\t// since browsers do that for us and it avoids security prompts\n\t\tplatform.isNative ? {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyC,\n\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyC, secondary: [KeyMod.CtrlCmd | KeyCode.Insert] },\n\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t} : undefined\n\t),\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '2_ccp',\n\t\ttitle: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, \"&&Copy\"),\n\t\torder: 2\n\t}, {\n\t\tmenuId: MenuId.EditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n\t\torder: 2,\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n\t\torder: 2,\n\t}]\n})) : undefined;\n\nMenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: nls.localize2('copy as', \"Copy As\"), group: '2_ccp', order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextCopy, title: nls.localize2('copy as', \"Copy As\"), group: CLIPBOARD_CONTEXT_MENU_GROUP, order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1, when: ContextKeyExpr.and(ContextKeyExpr.notEquals('resourceScheme', 'output'), EditorContextKeys.editorTextFocus) });\nMenuRegistry.appendMenuItem(MenuId.ExplorerContext, { submenu: MenuId.ExplorerContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1 });\n\nexport const PasteAction = supportsPaste ? registerCommand(new MultiCommand({\n\tid: 'editor.action.clipboardPasteAction',\n\tprecondition: undefined,\n\tkbOpts: (\n\t\t// Do not bind paste keybindings in the browser,\n\t\t// since browsers do that for us and it avoids security prompts\n\t\tplatform.isNative ? {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyV,\n\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyV, secondary: [KeyMod.Shift | KeyCode.Insert] },\n\t\t\tlinux: { primary: KeyMod.CtrlCmd | KeyCode.KeyV, secondary: [KeyMod.Shift | KeyCode.Insert] },\n\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t} : undefined\n\t),\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '2_ccp',\n\t\ttitle: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, \"&&Paste\"),\n\t\torder: 4\n\t}, {\n\t\tmenuId: MenuId.EditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 4,\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 4,\n\t}]\n})) : undefined;\n\nclass ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',\n\t\t\tlabel: nls.localize2('actions.clipboard.copyWithSyntaxHighlightingLabel', \"Copy with Syntax Highlighting\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('ExecCommandCopyWithSyntaxHighlightingAction#run');\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst emptySelectionClipboard = editor.getOption(EditorOption.emptySelectionClipboard);\n\n\t\tif (!emptySelectionClipboard && editor.getSelection().isEmpty()) {\n\t\t\treturn;\n\t\t}\n\n\t\tCopyOptions.forceCopyWithSyntaxHighlighting = true;\n\t\teditor.focus();\n\t\tlogService.trace('ExecCommandCopyWithSyntaxHighlightingAction (before execCommand copy)');\n\t\teditor.getContainerDomNode().ownerDocument.execCommand('copy');\n\t\tlogService.trace('ExecCommandCopyWithSyntaxHighlightingAction (after execCommand copy)');\n\t\tCopyOptions.forceCopyWithSyntaxHighlighting = false;\n\t}\n}\n\nfunction registerExecCommandImpl(target: MultiCommand | undefined, browserCommand: 'cut' | 'copy'): void {\n\tif (!target) {\n\t\treturn;\n\t}\n\n\t// 1. handle case when focus is in editor.\n\ttarget.addImplementation(10000, 'code-editor', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation code-editor for : ', browserCommand, ')');\n\t\t// Only if editor text focus (i.e. not if editor has widget focus).\n\t\tconst focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n\t\tif (focusedEditor && focusedEditor.hasTextFocus()) {\n\t\t\t// Do not execute if there is no selection and empty selection clipboard is off\n\t\t\tconst emptySelectionClipboard = focusedEditor.getOption(EditorOption.emptySelectionClipboard);\n\t\t\tconst selection = focusedEditor.getSelection();\n\t\t\tif (selection && selection.isEmpty() && !emptySelectionClipboard) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// TODO this is very ugly. The entire copy/paste/cut system needs a complete refactoring.\n\t\t\tif (focusedEditor.getOption(EditorOption.effectiveEditContext) && browserCommand === 'cut') {\n\t\t\t\tlogCopyCommand(focusedEditor);\n\t\t\t\t// execCommand(copy) works for edit context, but not execCommand(cut).\n\t\t\t\tlogService.trace('registerExecCommandImpl (before execCommand copy)');\n\t\t\t\tfocusedEditor.getContainerDomNode().ownerDocument.execCommand('copy');\n\t\t\t\tfocusedEditor.trigger(undefined, Handler.Cut, undefined);\n\t\t\t\tlogService.trace('registerExecCommandImpl (after execCommand copy)');\n\t\t\t} else {\n\t\t\t\tlogCopyCommand(focusedEditor);\n\t\t\t\tlogService.trace('registerExecCommandImpl (before execCommand ' + browserCommand + ')');\n\t\t\t\tfocusedEditor.getContainerDomNode().ownerDocument.execCommand(browserCommand);\n\t\t\t\tlogService.trace('registerExecCommandImpl (after execCommand ' + browserCommand + ')');\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t});\n\n\t// 2. (default) handle case when focus is somewhere else.\n\ttarget.addImplementation(0, 'generic-dom', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation generic-dom for : ', browserCommand, ')');\n\t\tlogService.trace('registerExecCommandImpl (before execCommand ' + browserCommand + ')');\n\t\tgetActiveDocument().execCommand(browserCommand);\n\t\tlogService.trace('registerExecCommandImpl (after execCommand ' + browserCommand + ')');\n\t\treturn true;\n\t});\n}\n\nfunction logCopyCommand(editor: ICodeEditor) {\n\tconst editContextEnabled = editor.getOption(EditorOption.effectiveEditContext);\n\tif (editContextEnabled) {\n\t\tconst nativeEditContext = NativeEditContextRegistry.get(editor.getId());\n\t\tif (nativeEditContext) {\n\t\t\tnativeEditContext.onWillCopy();\n\t\t}\n\t}\n}\n\nregisterExecCommandImpl(CutAction, 'cut');\nregisterExecCommandImpl(CopyAction, 'copy');\n\nif (PasteAction) {\n\t// 1. Paste: handle case when focus is in editor.\n\tPasteAction.addImplementation(10000, 'code-editor', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation code-editor for : paste)');\n\t\tconst codeEditorService = accessor.get(ICodeEditorService);\n\t\tconst clipboardService = accessor.get(IClipboardService);\n\t\tconst telemetryService = accessor.get(ITelemetryService);\n\t\tconst productService = accessor.get(IProductService);\n\n\t\t// Only if editor text focus (i.e. not if editor has widget focus).\n\t\tconst focusedEditor = codeEditorService.getFocusedCodeEditor();\n\t\tif (focusedEditor && focusedEditor.hasModel() && focusedEditor.hasTextFocus()) {\n\t\t\t// execCommand(paste) does not work with edit context\n\t\t\tconst editContextEnabled = focusedEditor.getOption(EditorOption.effectiveEditContext);\n\t\t\tif (editContextEnabled) {\n\t\t\t\tconst nativeEditContext = NativeEditContextRegistry.get(focusedEditor.getId());\n\t\t\t\tif (nativeEditContext) {\n\t\t\t\t\tnativeEditContext.onWillPaste();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst sw = StopWatch.create(true);\n\t\t\tlogService.trace('registerExecCommandImpl (before triggerPaste)');\n\t\t\tconst triggerPaste = clipboardService.triggerPaste(getActiveWindow().vscodeWindowId);\n\t\t\tif (triggerPaste) {\n\t\t\t\tlogService.trace('registerExecCommandImpl (triggerPaste defined)');\n\t\t\t\treturn triggerPaste.then(async () => {\n\t\t\t\t\tlogService.trace('registerExecCommandImpl (after triggerPaste)');\n\t\t\t\t\tif (productService.quality !== 'stable') {\n\t\t\t\t\t\tconst duration = sw.elapsed();\n\t\t\t\t\t\ttype EditorAsyncPasteClassification = {\n\t\t\t\t\t\t\tduration: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The duration of the paste operation.' };\n\t\t\t\t\t\t\towner: 'aiday-mar';\n\t\t\t\t\t\t\tcomment: 'Provides insight into the delay introduced by pasting async via keybindings.';\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttype EditorAsyncPasteEvent = {\n\t\t\t\t\t\t\tduration: number;\n\t\t\t\t\t\t};\n\t\t\t\t\t\ttelemetryService.publicLog2<EditorAsyncPasteEvent, EditorAsyncPasteClassification>(\n\t\t\t\t\t\t\t'editorAsyncPaste',\n\t\t\t\t\t\t\t{ duration }\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\treturn CopyPasteController.get(focusedEditor)?.finishedPaste() ?? Promise.resolve();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlogService.trace('registerExecCommandImpl (triggerPaste undefined)');\n\t\t\t}\n\t\t\tif (platform.isWeb) {\n\t\t\t\tlogService.trace('registerExecCommandImpl (Paste handling on web)');\n\t\t\t\t// Use the clipboard service if document.execCommand('paste') was not successful\n\t\t\t\treturn (async () => {\n\t\t\t\t\tconst clipboardText = await clipboardService.readText();\n\t\t\t\t\tif (clipboardText !== '') {\n\t\t\t\t\t\tconst metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);\n\t\t\t\t\t\tlet pasteOnNewLine = false;\n\t\t\t\t\t\tlet multicursorText: string[] | null = null;\n\t\t\t\t\t\tlet mode: string | null = null;\n\t\t\t\t\t\tif (metadata) {\n\t\t\t\t\t\t\tpasteOnNewLine = (focusedEditor.getOption(EditorOption.emptySelectionClipboard) && !!metadata.isFromEmptySelection);\n\t\t\t\t\t\t\tmulticursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);\n\t\t\t\t\t\t\tmode = metadata.mode;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tlogService.trace('registerExecCommandImpl (clipboardText.length : ', clipboardText.length, ' id : ', metadata?.id, ')');\n\t\t\t\t\t\tfocusedEditor.trigger('keyboard', Handler.Paste, {\n\t\t\t\t\t\t\ttext: clipboardText,\n\t\t\t\t\t\t\tpasteOnNewLine,\n\t\t\t\t\t\t\tmulticursorText,\n\t\t\t\t\t\t\tmode\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t})();\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t});\n\n\t// 2. Paste: (default) handle case when focus is somewhere else.\n\tPasteAction.addImplementation(0, 'generic-dom', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation generic-dom for : paste)');\n\t\tconst triggerPaste = accessor.get(IClipboardService).triggerPaste(getActiveWindow().vscodeWindowId);\n\t\treturn triggerPaste ?? false;\n\t});\n}\n\nif (supportsCopy) {\n\tregisterEditorAction(ExecCommandCopyWithSyntaxHighlightingAction);\n}\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/clipboard/browser/clipboard.ts"],"names":[],"mappings":"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","file":"clipboard.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 * as browser from '../../../../base/browser/browser.js';\nimport { getActiveDocument, getActiveWindow } from '../../../../base/browser/dom.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport * as nls from '../../../../nls.js';\nimport { MenuId, MenuRegistry } from '../../../../platform/actions/common/actions.js';\nimport { IClipboardService } from '../../../../platform/clipboard/common/clipboardService.js';\nimport { ContextKeyExpr } from '../../../../platform/contextkey/common/contextkey.js';\nimport { ServicesAccessor } from '../../../../platform/instantiation/common/instantiation.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { CopyOptions, generateDataToCopyAndStoreInMemory, InMemoryClipboardMetadataManager, PasteOptions } from '../../../browser/controller/editContext/clipboardUtils.js';\nimport { NativeEditContextRegistry } from '../../../browser/controller/editContext/native/nativeEditContextRegistry.js';\nimport { IActiveCodeEditor, ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { Command, EditorAction, MultiCommand, registerEditorAction } from '../../../browser/editorExtensions.js';\nimport { ICodeEditorService } from '../../../browser/services/codeEditorService.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { Handler } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { CopyPasteController } from '../../dropOrPasteInto/browser/copyPasteController.js';\n\nconst CLIPBOARD_CONTEXT_MENU_GROUP = '9_cutcopypaste';\n\nconst supportsCut = (platform.isNative || document.queryCommandSupported('cut'));\nconst supportsCopy = (platform.isNative || document.queryCommandSupported('copy'));\n// Firefox only supports navigator.clipboard.readText() in browser extensions.\n// See https://developer.mozilla.org/en-US/docs/Web/API/Clipboard/readText#Browser_compatibility\n// When loading over http, navigator.clipboard can be undefined. See https://github.com/microsoft/monaco-editor/issues/2313\nconst supportsPaste = (typeof navigator.clipboard === 'undefined' || browser.isFirefox) ? document.queryCommandSupported('paste') : true;\n\nfunction registerCommand<T extends Command>(command: T): T {\n\tcommand.register();\n\treturn command;\n}\n\nexport const CutAction = supportsCut ? registerCommand(new MultiCommand({\n\tid: 'editor.action.clipboardCutAction',\n\tprecondition: undefined,\n\tkbOpts: (\n\t\t// Do not bind cut keybindings in the browser,\n\t\t// since browsers do that for us and it avoids security prompts\n\t\tplatform.isNative ? {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyX,\n\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyX, secondary: [KeyMod.Shift | KeyCode.Delete] },\n\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t} : undefined\n\t),\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '2_ccp',\n\t\ttitle: nls.localize({ key: 'miCut', comment: ['&& denotes a mnemonic'] }, \"Cu&&t\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.EditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 1,\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.cutLabel', \"Cut\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 1,\n\t}]\n})) : undefined;\n\nexport const CopyAction = supportsCopy ? registerCommand(new MultiCommand({\n\tid: 'editor.action.clipboardCopyAction',\n\tprecondition: undefined,\n\tkbOpts: (\n\t\t// Do not bind copy keybindings in the browser,\n\t\t// since browsers do that for us and it avoids security prompts\n\t\tplatform.isNative ? {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyC,\n\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyC, secondary: [KeyMod.CtrlCmd | KeyCode.Insert] },\n\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t} : undefined\n\t),\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '2_ccp',\n\t\ttitle: nls.localize({ key: 'miCopy', comment: ['&& denotes a mnemonic'] }, \"&&Copy\"),\n\t\torder: 2\n\t}, {\n\t\tmenuId: MenuId.EditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n\t\torder: 2,\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.copyLabel', \"Copy\"),\n\t\torder: 2,\n\t}]\n})) : undefined;\n\nMenuRegistry.appendMenuItem(MenuId.MenubarEditMenu, { submenu: MenuId.MenubarCopy, title: nls.localize2('copy as', \"Copy As\"), group: '2_ccp', order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextCopy, title: nls.localize2('copy as', \"Copy As\"), group: CLIPBOARD_CONTEXT_MENU_GROUP, order: 3 });\nMenuRegistry.appendMenuItem(MenuId.EditorContext, { submenu: MenuId.EditorContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1, when: ContextKeyExpr.and(ContextKeyExpr.notEquals('resourceScheme', 'output'), EditorContextKeys.editorTextFocus) });\nMenuRegistry.appendMenuItem(MenuId.ExplorerContext, { submenu: MenuId.ExplorerContextShare, title: nls.localize2('share', \"Share\"), group: '11_share', order: -1 });\n\nexport const PasteAction = supportsPaste ? registerCommand(new MultiCommand({\n\tid: 'editor.action.clipboardPasteAction',\n\tprecondition: undefined,\n\tkbOpts: (\n\t\t// Do not bind paste keybindings in the browser,\n\t\t// since browsers do that for us and it avoids security prompts\n\t\tplatform.isNative ? {\n\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyV,\n\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyV, secondary: [KeyMod.Shift | KeyCode.Insert] },\n\t\t\tlinux: { primary: KeyMod.CtrlCmd | KeyCode.KeyV, secondary: [KeyMod.Shift | KeyCode.Insert] },\n\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t} : undefined\n\t),\n\tmenuOpts: [{\n\t\tmenuId: MenuId.MenubarEditMenu,\n\t\tgroup: '2_ccp',\n\t\ttitle: nls.localize({ key: 'miPaste', comment: ['&& denotes a mnemonic'] }, \"&&Paste\"),\n\t\torder: 4\n\t}, {\n\t\tmenuId: MenuId.EditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 4,\n\t}, {\n\t\tmenuId: MenuId.CommandPalette,\n\t\tgroup: '',\n\t\ttitle: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n\t\torder: 1\n\t}, {\n\t\tmenuId: MenuId.SimpleEditorContext,\n\t\tgroup: CLIPBOARD_CONTEXT_MENU_GROUP,\n\t\ttitle: nls.localize('actions.clipboard.pasteLabel', \"Paste\"),\n\t\twhen: EditorContextKeys.writable,\n\t\torder: 4,\n\t}]\n})) : undefined;\n\nclass ExecCommandCopyWithSyntaxHighlightingAction extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.clipboardCopyWithSyntaxHighlightingAction',\n\t\t\tlabel: nls.localize2('actions.clipboard.copyWithSyntaxHighlightingLabel', \"Copy with Syntax Highlighting\"),\n\t\t\tprecondition: undefined,\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: 0,\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\tpublic run(accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tconst logService = accessor.get(ILogService);\n\t\tconst clipboardService = accessor.get(IClipboardService);\n\t\tlogService.trace('ExecCommandCopyWithSyntaxHighlightingAction#run');\n\t\tif (!editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst emptySelectionClipboard = editor.getOption(EditorOption.emptySelectionClipboard);\n\n\t\tif (!emptySelectionClipboard && editor.getSelection().isEmpty()) {\n\t\t\treturn;\n\t\t}\n\n\t\tCopyOptions.forceCopyWithSyntaxHighlighting = true;\n\t\teditor.focus();\n\t\tlogService.trace('ExecCommandCopyWithSyntaxHighlightingAction (before execCommand copy)');\n\t\texecuteClipboardCopyWithWorkaround(editor, clipboardService);\n\t\tlogService.trace('ExecCommandCopyWithSyntaxHighlightingAction (after execCommand copy)');\n\t\tCopyOptions.forceCopyWithSyntaxHighlighting = false;\n\t}\n}\n\nfunction executeClipboardCopyWithWorkaround(editor: IActiveCodeEditor, clipboardService: IClipboardService) {\n\t// !!!!!\n\t// This is a workaround for what we think is an Electron bug where\n\t// execCommand('copy') does not always work (it does not fire a clipboard event)\n\t// We will use this as a signal that we have executed a copy command\n\t// !!!!!\n\tCopyOptions.electronBugWorkaroundCopyEventHasFired = false;\n\teditor.getContainerDomNode().ownerDocument.execCommand('copy');\n\tif (platform.isNative && CopyOptions.electronBugWorkaroundCopyEventHasFired === false) {\n\t\t// We have encountered the Electron bug!\n\t\t// As a workaround, we will write (only the plaintext data) to the clipboard in a different way\n\t\t// We will use the clipboard service (which in the native case will go to electron's clipboard API)\n\t\tconst { dataToCopy } = generateDataToCopyAndStoreInMemory(editor._getViewModel(), editor.getOptions(), undefined, browser.isFirefox);\n\t\tclipboardService.writeText(dataToCopy.text);\n\t}\n}\n\nasync function pasteWithNavigatorAPI(editor: IActiveCodeEditor, clipboardService: IClipboardService, logService: ILogService): Promise<void> {\n\tconst clipboardText = await clipboardService.readText();\n\tif (clipboardText !== '') {\n\t\tconst metadata = InMemoryClipboardMetadataManager.INSTANCE.get(clipboardText);\n\t\tlet pasteOnNewLine = false;\n\t\tlet multicursorText: string[] | null = null;\n\t\tlet mode: string | null = null;\n\t\tif (metadata) {\n\t\t\tpasteOnNewLine = (editor.getOption(EditorOption.emptySelectionClipboard) && !!metadata.isFromEmptySelection);\n\t\t\tmulticursorText = (typeof metadata.multicursorText !== 'undefined' ? metadata.multicursorText : null);\n\t\t\tmode = metadata.mode;\n\t\t}\n\t\tlogService.trace('pasteWithNavigatorAPI with id : ', metadata?.id, ', clipboardText.length : ', clipboardText.length);\n\t\teditor.trigger('keyboard', Handler.Paste, {\n\t\t\ttext: clipboardText,\n\t\t\tpasteOnNewLine,\n\t\t\tmulticursorText,\n\t\t\tmode\n\t\t});\n\t}\n}\n\nfunction registerExecCommandImpl(target: MultiCommand | undefined, browserCommand: 'cut' | 'copy'): void {\n\tif (!target) {\n\t\treturn;\n\t}\n\n\t// 1. handle case when focus is in editor.\n\ttarget.addImplementation(10000, 'code-editor', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tconst clipboardService = accessor.get(IClipboardService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation code-editor for : ', browserCommand, ')');\n\t\t// Only if editor text focus (i.e. not if editor has widget focus).\n\t\tconst focusedEditor = accessor.get(ICodeEditorService).getFocusedCodeEditor();\n\t\tif (focusedEditor && focusedEditor.hasTextFocus() && focusedEditor.hasModel()) {\n\t\t\t// Do not execute if there is no selection and empty selection clipboard is off\n\t\t\tconst emptySelectionClipboard = focusedEditor.getOption(EditorOption.emptySelectionClipboard);\n\t\t\tconst selection = focusedEditor.getSelection();\n\t\t\tif (selection && selection.isEmpty() && !emptySelectionClipboard) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\t// TODO this is very ugly. The entire copy/paste/cut system needs a complete refactoring.\n\t\t\tif (focusedEditor.getOption(EditorOption.effectiveEditContext) && browserCommand === 'cut') {\n\t\t\t\tlogCopyCommand(focusedEditor);\n\t\t\t\t// execCommand(copy) works for edit context, but not execCommand(cut).\n\t\t\t\tlogService.trace('registerExecCommandImpl (before execCommand copy)');\n\t\t\t\texecuteClipboardCopyWithWorkaround(focusedEditor, clipboardService);\n\t\t\t\tfocusedEditor.trigger(undefined, Handler.Cut, undefined);\n\t\t\t\tlogService.trace('registerExecCommandImpl (after execCommand copy)');\n\t\t\t} else {\n\t\t\t\tlogCopyCommand(focusedEditor);\n\t\t\t\tlogService.trace('registerExecCommandImpl (before execCommand ' + browserCommand + ')');\n\t\t\t\tif (browserCommand === 'copy') {\n\t\t\t\t\texecuteClipboardCopyWithWorkaround(focusedEditor, clipboardService);\n\t\t\t\t} else {\n\t\t\t\t\tfocusedEditor.getContainerDomNode().ownerDocument.execCommand(browserCommand);\n\t\t\t\t}\n\t\t\t\tlogService.trace('registerExecCommandImpl (after execCommand ' + browserCommand + ')');\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t});\n\n\t// 2. (default) handle case when focus is somewhere else.\n\ttarget.addImplementation(0, 'generic-dom', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation generic-dom for : ', browserCommand, ')');\n\t\tlogService.trace('registerExecCommandImpl (before execCommand ' + browserCommand + ')');\n\t\tgetActiveDocument().execCommand(browserCommand);\n\t\tlogService.trace('registerExecCommandImpl (after execCommand ' + browserCommand + ')');\n\t\treturn true;\n\t});\n}\n\nfunction logCopyCommand(editor: ICodeEditor) {\n\tconst editContextEnabled = editor.getOption(EditorOption.effectiveEditContext);\n\tif (editContextEnabled) {\n\t\tconst nativeEditContext = NativeEditContextRegistry.get(editor.getId());\n\t\tif (nativeEditContext) {\n\t\t\tnativeEditContext.onWillCopy();\n\t\t}\n\t}\n}\n\nregisterExecCommandImpl(CutAction, 'cut');\nregisterExecCommandImpl(CopyAction, 'copy');\n\nif (PasteAction) {\n\t// 1. Paste: handle case when focus is in editor.\n\tPasteAction.addImplementation(10000, 'code-editor', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation code-editor for : paste)');\n\t\tconst codeEditorService = accessor.get(ICodeEditorService);\n\t\tconst clipboardService = accessor.get(IClipboardService);\n\n\t\t// Only if editor text focus (i.e. not if editor has widget focus).\n\t\tconst focusedEditor = codeEditorService.getFocusedCodeEditor();\n\t\tif (focusedEditor && focusedEditor.hasModel() && focusedEditor.hasTextFocus()) {\n\t\t\t// execCommand(paste) does not work with edit context\n\t\t\tconst editContextEnabled = focusedEditor.getOption(EditorOption.effectiveEditContext);\n\t\t\tif (editContextEnabled) {\n\t\t\t\tconst nativeEditContext = NativeEditContextRegistry.get(focusedEditor.getId());\n\t\t\t\tif (nativeEditContext) {\n\t\t\t\t\tnativeEditContext.onWillPaste();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tlogService.trace('registerExecCommandImpl (before triggerPaste)');\n\t\t\tPasteOptions.electronBugWorkaroundPasteEventHasFired = false;\n\t\t\tconst triggerPaste = clipboardService.triggerPaste(getActiveWindow().vscodeWindowId);\n\t\t\tif (triggerPaste) {\n\t\t\t\tlogService.trace('registerExecCommandImpl (triggerPaste defined)');\n\t\t\t\treturn triggerPaste.then(async () => {\n\t\t\t\t\tif (PasteOptions.electronBugWorkaroundPasteEventHasFired === false) {\n\t\t\t\t\t\treturn pasteWithNavigatorAPI(focusedEditor, clipboardService, logService);\n\t\t\t\t\t}\n\t\t\t\t\tlogService.trace('registerExecCommandImpl (after triggerPaste)');\n\t\t\t\t\treturn CopyPasteController.get(focusedEditor)?.finishedPaste() ?? Promise.resolve();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlogService.trace('registerExecCommandImpl (triggerPaste undefined)');\n\t\t\t}\n\t\t\tif (platform.isWeb) {\n\t\t\t\tlogService.trace('registerExecCommandImpl (Paste handling on web)');\n\t\t\t\t// Use the clipboard service if document.execCommand('paste') was not successful\n\t\t\t\treturn pasteWithNavigatorAPI(focusedEditor, clipboardService, logService);\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t});\n\n\t// 2. Paste: (default) handle case when focus is somewhere else.\n\tPasteAction.addImplementation(0, 'generic-dom', (accessor: ServicesAccessor, args: unknown) => {\n\t\tconst logService = accessor.get(ILogService);\n\t\tlogService.trace('registerExecCommandImpl (addImplementation generic-dom for : paste)');\n\t\tconst triggerPaste = accessor.get(IClipboardService).triggerPaste(getActiveWindow().vscodeWindowId);\n\t\treturn triggerPaste ?? false;\n\t});\n}\n\nif (supportsCopy) {\n\tregisterEditorAction(ExecCommandCopyWithSyntaxHighlightingAction);\n}\n"]}
@@ -252,7 +252,7 @@ export async function applyCodeAction(accessor, item, codeActionReason, options,
252
252
  const message = asMessage(err);
253
253
  notificationService.error(typeof message === 'string'
254
254
  ? message
255
- : nls.localize(836, "An unknown error occurred while applying the code action"));
255
+ : nls.localize(837, "An unknown error occurred while applying the code action"));
256
256
  }
257
257
  }
258
258
  // ensure the start sound and end sound do not overlap
@@ -21,23 +21,23 @@ const argsSchema = {
21
21
  properties: {
22
22
  'kind': {
23
23
  type: 'string',
24
- description: nls.localize(837, "Kind of the code action to run."),
24
+ description: nls.localize(838, "Kind of the code action to run."),
25
25
  },
26
26
  'apply': {
27
27
  type: 'string',
28
- description: nls.localize(838, "Controls when the returned actions are applied."),
28
+ description: nls.localize(839, "Controls when the returned actions are applied."),
29
29
  default: "ifSingle" /* CodeActionAutoApply.IfSingle */,
30
30
  enum: ["first" /* CodeActionAutoApply.First */, "ifSingle" /* CodeActionAutoApply.IfSingle */, "never" /* CodeActionAutoApply.Never */],
31
31
  enumDescriptions: [
32
- nls.localize(839, "Always apply the first returned code action."),
33
- nls.localize(840, "Apply the first returned code action if it is the only one."),
34
- nls.localize(841, "Do not apply the returned code actions."),
32
+ nls.localize(840, "Always apply the first returned code action."),
33
+ nls.localize(841, "Apply the first returned code action if it is the only one."),
34
+ nls.localize(842, "Do not apply the returned code actions."),
35
35
  ]
36
36
  },
37
37
  'preferred': {
38
38
  type: 'boolean',
39
39
  default: false,
40
- description: nls.localize(842, "Controls if only preferred code actions should be returned."),
40
+ description: nls.localize(843, "Controls if only preferred code actions should be returned."),
41
41
  }
42
42
  }
43
43
  };
@@ -51,7 +51,7 @@ export class QuickFixAction extends EditorAction {
51
51
  constructor() {
52
52
  super({
53
53
  id: quickFixCommandId,
54
- label: nls.localize2(859, "Quick Fix..."),
54
+ label: nls.localize2(860, "Quick Fix..."),
55
55
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),
56
56
  kbOpts: {
57
57
  kbExpr: EditorContextKeys.textInputFocus,
@@ -61,7 +61,7 @@ export class QuickFixAction extends EditorAction {
61
61
  });
62
62
  }
63
63
  run(_accessor, editor) {
64
- return triggerCodeActionsForEditorSelection(editor, nls.localize(843, "No code actions available"), undefined, undefined, CodeActionTriggerSource.QuickFix);
64
+ return triggerCodeActionsForEditorSelection(editor, nls.localize(844, "No code actions available"), undefined, undefined, CodeActionTriggerSource.QuickFix);
65
65
  }
66
66
  }
67
67
  export class CodeActionCommand extends EditorCommand {
@@ -82,11 +82,11 @@ export class CodeActionCommand extends EditorCommand {
82
82
  });
83
83
  return triggerCodeActionsForEditorSelection(editor, typeof userArgs?.kind === 'string'
84
84
  ? args.preferred
85
- ? nls.localize(844, "No preferred code actions for '{0}' available", userArgs.kind)
86
- : nls.localize(845, "No code actions for '{0}' available", userArgs.kind)
85
+ ? nls.localize(845, "No preferred code actions for '{0}' available", userArgs.kind)
86
+ : nls.localize(846, "No code actions for '{0}' available", userArgs.kind)
87
87
  : args.preferred
88
- ? nls.localize(846, "No preferred code actions available")
89
- : nls.localize(847, "No code actions available"), {
88
+ ? nls.localize(847, "No preferred code actions available")
89
+ : nls.localize(848, "No code actions available"), {
90
90
  include: args.kind,
91
91
  includeSourceActions: true,
92
92
  onlyIncludePreferredActions: args.preferred,
@@ -97,7 +97,7 @@ export class RefactorAction extends EditorAction {
97
97
  constructor() {
98
98
  super({
99
99
  id: refactorCommandId,
100
- label: nls.localize2(860, "Refactor..."),
100
+ label: nls.localize2(861, "Refactor..."),
101
101
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),
102
102
  kbOpts: {
103
103
  kbExpr: EditorContextKeys.textInputFocus,
@@ -125,11 +125,11 @@ export class RefactorAction extends EditorAction {
125
125
  });
126
126
  return triggerCodeActionsForEditorSelection(editor, typeof userArgs?.kind === 'string'
127
127
  ? args.preferred
128
- ? nls.localize(848, "No preferred refactorings for '{0}' available", userArgs.kind)
129
- : nls.localize(849, "No refactorings for '{0}' available", userArgs.kind)
128
+ ? nls.localize(849, "No preferred refactorings for '{0}' available", userArgs.kind)
129
+ : nls.localize(850, "No refactorings for '{0}' available", userArgs.kind)
130
130
  : args.preferred
131
- ? nls.localize(850, "No preferred refactorings available")
132
- : nls.localize(851, "No refactorings available"), {
131
+ ? nls.localize(851, "No preferred refactorings available")
132
+ : nls.localize(852, "No refactorings available"), {
133
133
  include: CodeActionKind.Refactor.contains(args.kind) ? args.kind : HierarchicalKind.None,
134
134
  onlyIncludePreferredActions: args.preferred
135
135
  }, args.apply, CodeActionTriggerSource.Refactor);
@@ -139,7 +139,7 @@ export class SourceAction extends EditorAction {
139
139
  constructor() {
140
140
  super({
141
141
  id: sourceActionCommandId,
142
- label: nls.localize2(861, "Source Action..."),
142
+ label: nls.localize2(862, "Source Action..."),
143
143
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCodeActionsProvider),
144
144
  contextMenuOpts: {
145
145
  group: '1_modification',
@@ -159,11 +159,11 @@ export class SourceAction extends EditorAction {
159
159
  });
160
160
  return triggerCodeActionsForEditorSelection(editor, typeof userArgs?.kind === 'string'
161
161
  ? args.preferred
162
- ? nls.localize(852, "No preferred source actions for '{0}' available", userArgs.kind)
163
- : nls.localize(853, "No source actions for '{0}' available", userArgs.kind)
162
+ ? nls.localize(853, "No preferred source actions for '{0}' available", userArgs.kind)
163
+ : nls.localize(854, "No source actions for '{0}' available", userArgs.kind)
164
164
  : args.preferred
165
- ? nls.localize(854, "No preferred source actions available")
166
- : nls.localize(855, "No source actions available"), {
165
+ ? nls.localize(855, "No preferred source actions available")
166
+ : nls.localize(856, "No source actions available"), {
167
167
  include: CodeActionKind.Source.contains(args.kind) ? args.kind : HierarchicalKind.None,
168
168
  includeSourceActions: true,
169
169
  onlyIncludePreferredActions: args.preferred,
@@ -174,7 +174,7 @@ export class OrganizeImportsAction extends EditorAction {
174
174
  constructor() {
175
175
  super({
176
176
  id: organizeImportsCommandId,
177
- label: nls.localize2(862, "Organize Imports"),
177
+ label: nls.localize2(863, "Organize Imports"),
178
178
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceOrganizeImports)),
179
179
  kbOpts: {
180
180
  kbExpr: EditorContextKeys.textInputFocus,
@@ -182,31 +182,31 @@ export class OrganizeImportsAction extends EditorAction {
182
182
  weight: 100 /* KeybindingWeight.EditorContrib */
183
183
  },
184
184
  metadata: {
185
- description: nls.localize2(863, "Organize imports in the current file. Also called 'Optimize Imports' by some tools")
185
+ description: nls.localize2(864, "Organize imports in the current file. Also called 'Optimize Imports' by some tools")
186
186
  }
187
187
  });
188
188
  }
189
189
  run(_accessor, editor) {
190
- return triggerCodeActionsForEditorSelection(editor, nls.localize(856, "No organize imports action available"), { include: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, "ifSingle" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.OrganizeImports);
190
+ return triggerCodeActionsForEditorSelection(editor, nls.localize(857, "No organize imports action available"), { include: CodeActionKind.SourceOrganizeImports, includeSourceActions: true }, "ifSingle" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.OrganizeImports);
191
191
  }
192
192
  }
193
193
  export class FixAllAction extends EditorAction {
194
194
  constructor() {
195
195
  super({
196
196
  id: fixAllCommandId,
197
- label: nls.localize2(864, "Fix All"),
197
+ label: nls.localize2(865, "Fix All"),
198
198
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.SourceFixAll))
199
199
  });
200
200
  }
201
201
  run(_accessor, editor) {
202
- return triggerCodeActionsForEditorSelection(editor, nls.localize(857, "No fix all action available"), { include: CodeActionKind.SourceFixAll, includeSourceActions: true }, "ifSingle" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.FixAll);
202
+ return triggerCodeActionsForEditorSelection(editor, nls.localize(858, "No fix all action available"), { include: CodeActionKind.SourceFixAll, includeSourceActions: true }, "ifSingle" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.FixAll);
203
203
  }
204
204
  }
205
205
  export class AutoFixAction extends EditorAction {
206
206
  constructor() {
207
207
  super({
208
208
  id: autoFixCommandId,
209
- label: nls.localize2(865, "Auto Fix..."),
209
+ label: nls.localize2(866, "Auto Fix..."),
210
210
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, contextKeyForSupportedActions(CodeActionKind.QuickFix)),
211
211
  kbOpts: {
212
212
  kbExpr: EditorContextKeys.textInputFocus,
@@ -219,7 +219,7 @@ export class AutoFixAction extends EditorAction {
219
219
  });
220
220
  }
221
221
  run(_accessor, editor) {
222
- return triggerCodeActionsForEditorSelection(editor, nls.localize(858, "No auto fixes available"), {
222
+ return triggerCodeActionsForEditorSelection(editor, nls.localize(859, "No auto fixes available"), {
223
223
  include: CodeActionKind.QuickFix,
224
224
  onlyIncludePreferredActions: true
225
225
  }, "ifSingle" /* CodeActionAutoApply.IfSingle */, CodeActionTriggerSource.AutoFix);
@@ -25,7 +25,7 @@ Registry.as(Extensions.Configuration).registerConfiguration({
25
25
  'editor.codeActionWidget.showHeaders': {
26
26
  type: 'boolean',
27
27
  scope: 6 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,
28
- description: nls.localize(866, "Enable/disable showing group headers in the Code Action menu."),
28
+ description: nls.localize(867, "Enable/disable showing group headers in the Code Action menu."),
29
29
  default: true,
30
30
  },
31
31
  }
@@ -36,7 +36,7 @@ Registry.as(Extensions.Configuration).registerConfiguration({
36
36
  'editor.codeActionWidget.includeNearbyQuickFixes': {
37
37
  type: 'boolean',
38
38
  scope: 6 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,
39
- description: nls.localize(867, "Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),
39
+ description: nls.localize(868, "Enable/disable showing nearest Quick Fix within a line when not currently on a diagnostic."),
40
40
  default: true,
41
41
  },
42
42
  }
@@ -47,7 +47,7 @@ Registry.as(Extensions.Configuration).registerConfiguration({
47
47
  'editor.codeActions.triggerOnFocusChange': {
48
48
  type: 'boolean',
49
49
  scope: 6 /* ConfigurationScope.LANGUAGE_OVERRIDABLE */,
50
- markdownDescription: nls.localize(868, 'Enable triggering {0} when {1} is set to {2}. Code Actions must be set to {3} to be triggered for window and focus changes.', '`#editor.codeActionsOnSave#`', '`#files.autoSave#`', '`afterDelay`', '`always`'),
50
+ markdownDescription: nls.localize(869, 'Enable triggering {0} when {1} is set to {2}. Code Actions must be set to {3} to be triggered for window and focus changes.', '`#editor.codeActionsOnSave#`', '`#files.autoSave#`', '`afterDelay`', '`always`'),
51
51
  default: false,
52
52
  },
53
53
  }