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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/esm/nls.keys.json +1 -1
  2. package/esm/nls.messages.cs.js +2 -2
  3. package/esm/nls.messages.de.js +2 -2
  4. package/esm/nls.messages.es.js +2 -2
  5. package/esm/nls.messages.fr.js +2 -2
  6. package/esm/nls.messages.it.js +2 -2
  7. package/esm/nls.messages.ja.js +2 -2
  8. package/esm/nls.messages.js +1 -1
  9. package/esm/nls.messages.json +1 -1
  10. package/esm/nls.messages.ko.js +2 -2
  11. package/esm/nls.messages.pl.js +2 -2
  12. package/esm/nls.messages.pt-br.js +2 -2
  13. package/esm/nls.messages.ru.js +2 -2
  14. package/esm/nls.messages.tr.js +2 -2
  15. package/esm/nls.messages.zh-cn.js +2 -2
  16. package/esm/nls.messages.zh-tw.js +2 -2
  17. package/esm/nls.metadata.json +30 -4
  18. package/esm/vs/base/browser/dom.js +1 -4
  19. package/esm/vs/base/browser/dom.js.map +1 -1
  20. package/esm/vs/base/browser/markdownRenderer.js +25 -11
  21. package/esm/vs/base/browser/markdownRenderer.js.map +1 -1
  22. package/esm/vs/base/browser/ui/button/button.js +15 -8
  23. package/esm/vs/base/browser/ui/button/button.js.map +1 -1
  24. package/esm/vs/base/browser/ui/codicons/codicon/codicon-modifiers.css +3 -8
  25. package/esm/vs/base/browser/ui/codicons/codicon/codicon.ttf +0 -0
  26. package/esm/vs/base/browser/ui/list/list.css +1 -0
  27. package/esm/vs/base/browser/ui/toolbar/toolbar.js +3 -0
  28. package/esm/vs/base/browser/ui/toolbar/toolbar.js.map +1 -1
  29. package/esm/vs/base/common/codiconsLibrary.js +11 -2
  30. package/esm/vs/base/common/codiconsLibrary.js.map +1 -1
  31. package/esm/vs/base/common/defaultAccount.js +6 -0
  32. package/esm/vs/base/common/defaultAccount.js.map +1 -0
  33. package/esm/vs/base/common/equals.js +73 -24
  34. package/esm/vs/base/common/equals.js.map +1 -1
  35. package/esm/vs/base/common/event.js +14 -4
  36. package/esm/vs/base/common/event.js.map +1 -1
  37. package/esm/vs/base/common/iterator.js.map +1 -1
  38. package/esm/vs/base/common/keybindings.js +0 -8
  39. package/esm/vs/base/common/keybindings.js.map +1 -1
  40. package/esm/vs/base/common/lifecycle.js +2 -2
  41. package/esm/vs/base/common/lifecycle.js.map +1 -1
  42. package/esm/vs/base/common/marshallingIds.js.map +1 -1
  43. package/esm/vs/base/common/observableInternal/index.js +1 -1
  44. package/esm/vs/base/common/observableInternal/index.js.map +1 -1
  45. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js +1 -1
  46. package/esm/vs/base/common/observableInternal/observables/observableFromEvent.js.map +1 -1
  47. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js +16 -0
  48. package/esm/vs/base/common/observableInternal/reactions/autorunImpl.js.map +1 -1
  49. package/esm/vs/base/common/observableInternal/utils/utils.js +11 -0
  50. package/esm/vs/base/common/observableInternal/utils/utils.js.map +1 -1
  51. package/esm/vs/base/common/product.js.map +1 -1
  52. package/esm/vs/base/common/strings.js +3 -1
  53. package/esm/vs/base/common/strings.js.map +1 -1
  54. package/esm/vs/editor/browser/controller/dragScrolling.js +2 -1
  55. package/esm/vs/editor/browser/controller/dragScrolling.js.map +1 -1
  56. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js +73 -2
  57. package/esm/vs/editor/browser/controller/editContext/clipboardUtils.js.map +1 -1
  58. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js +7 -51
  59. package/esm/vs/editor/browser/controller/editContext/native/nativeEditContext.js.map +1 -1
  60. package/esm/vs/editor/browser/controller/editContext/screenReaderUtils.js.map +1 -1
  61. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js +7 -20
  62. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContext.js.map +1 -1
  63. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js +14 -44
  64. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextInput.js.map +1 -1
  65. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js +19 -0
  66. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextRegistry.js.map +1 -0
  67. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js +14 -1
  68. package/esm/vs/editor/browser/controller/editContext/textArea/textAreaEditContextState.js.map +1 -1
  69. package/esm/vs/editor/browser/controller/mouseHandler.js +5 -2
  70. package/esm/vs/editor/browser/controller/mouseHandler.js.map +1 -1
  71. package/esm/vs/editor/browser/editorBrowser.js.map +1 -1
  72. package/esm/vs/editor/browser/observableCodeEditor.js +32 -15
  73. package/esm/vs/editor/browser/observableCodeEditor.js.map +1 -1
  74. package/esm/vs/editor/browser/view.js +11 -2
  75. package/esm/vs/editor/browser/view.js.map +1 -1
  76. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js +5 -2
  77. package/esm/vs/editor/browser/viewParts/contentWidgets/contentWidgets.js.map +1 -1
  78. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js +10 -0
  79. package/esm/vs/editor/browser/widget/codeEditor/codeEditorWidget.js.map +1 -1
  80. package/esm/vs/editor/browser/widget/multiDiffEditor/multiDiffEditorWidgetImpl.js.map +1 -1
  81. package/esm/vs/editor/browser/widget/multiDiffEditor/style.css +48 -0
  82. package/esm/vs/editor/common/config/fontInfo.js +1 -1
  83. package/esm/vs/editor/common/config/fontInfo.js.map +1 -1
  84. package/esm/vs/editor/common/core/edits/edit.js +19 -0
  85. package/esm/vs/editor/common/core/edits/edit.js.map +1 -1
  86. package/esm/vs/editor/common/core/edits/stringEdit.js +13 -0
  87. package/esm/vs/editor/common/core/edits/stringEdit.js.map +1 -1
  88. package/esm/vs/editor/common/core/edits/textEdit.js +0 -3
  89. package/esm/vs/editor/common/core/edits/textEdit.js.map +1 -1
  90. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js +24 -10
  91. package/esm/vs/editor/common/core/text/positionToOffsetImpl.js.map +1 -1
  92. package/esm/vs/editor/common/cursor/cursorMoveCommands.js +4 -4
  93. package/esm/vs/editor/common/cursor/cursorMoveCommands.js.map +1 -1
  94. package/esm/vs/editor/common/cursor/cursorWordOperations.js +6 -3
  95. package/esm/vs/editor/common/cursor/cursorWordOperations.js.map +1 -1
  96. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js +2 -2
  97. package/esm/vs/editor/common/languages/defaultDocumentColorsComputer.js.map +1 -1
  98. package/esm/vs/editor/common/languages/nullTokenize.js +1 -1
  99. package/esm/vs/editor/common/languages/nullTokenize.js.map +1 -1
  100. package/esm/vs/editor/common/languages/supports/tokenization.js +3 -0
  101. package/esm/vs/editor/common/languages/supports/tokenization.js.map +1 -1
  102. package/esm/vs/editor/common/languages.js +2 -1
  103. package/esm/vs/editor/common/languages.js.map +1 -1
  104. package/esm/vs/editor/common/model/decorationProvider.js +21 -1
  105. package/esm/vs/editor/common/model/decorationProvider.js.map +1 -1
  106. package/esm/vs/editor/common/model/textModel.js +49 -30
  107. package/esm/vs/editor/common/model/textModel.js.map +1 -1
  108. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js +6 -3
  109. package/esm/vs/editor/common/model/tokens/abstractSyntaxTokenBackend.js.map +1 -1
  110. package/esm/vs/editor/common/model/tokens/annotations.js +177 -0
  111. package/esm/vs/editor/common/model/tokens/annotations.js.map +1 -0
  112. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js +131 -0
  113. package/esm/vs/editor/common/model/tokens/tokenizationFontDecorationsProvider.js.map +1 -0
  114. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js +9 -0
  115. package/esm/vs/editor/common/model/tokens/tokenizationTextModelPart.js.map +1 -1
  116. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js +9 -0
  117. package/esm/vs/editor/common/model/tokens/tokenizerSyntaxTokenBackend.js.map +1 -1
  118. package/esm/vs/editor/common/textModelEditSource.js +2 -0
  119. package/esm/vs/editor/common/textModelEditSource.js.map +1 -1
  120. package/esm/vs/editor/common/textModelEvents.js.map +1 -1
  121. package/esm/vs/editor/common/viewLayout/lineDecorations.js.map +1 -1
  122. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js +1 -1
  123. package/esm/vs/editor/common/viewLayout/viewLineRenderer.js.map +1 -1
  124. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js +54 -36
  125. package/esm/vs/editor/contrib/clipboard/browser/clipboard.js.map +1 -1
  126. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js +14 -1
  127. package/esm/vs/editor/contrib/dropOrPasteInto/browser/copyPasteController.js.map +1 -1
  128. package/esm/vs/editor/contrib/floatingMenu/browser/floatingMenu.css +1 -1
  129. package/esm/vs/editor/contrib/hover/browser/hover.css +1 -1
  130. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js +1 -1
  131. package/esm/vs/editor/contrib/hover/browser/markdownHoverParticipant.js.map +1 -1
  132. package/esm/vs/editor/contrib/inPlaceReplace/browser/inPlaceReplace.js +2 -2
  133. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js +1 -0
  134. package/esm/vs/editor/contrib/inlayHints/browser/inlayHintsController.js.map +1 -1
  135. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js +1 -0
  136. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commandIds.js.map +1 -1
  137. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js +33 -4
  138. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/commands.js.map +1 -1
  139. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js +13 -12
  140. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionContextKeys.js.map +1 -1
  141. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js +7 -1
  142. package/esm/vs/editor/contrib/inlineCompletions/browser/controller/inlineCompletionsController.js.map +1 -1
  143. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/hoverParticipant.js +2 -2
  144. package/esm/vs/editor/contrib/inlineCompletions/browser/hintsWidget/inlineCompletionsHintsWidget.js +5 -5
  145. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js +2 -1
  146. package/esm/vs/editor/contrib/inlineCompletions/browser/inlineCompletions.contribution.js.map +1 -1
  147. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js +8 -0
  148. package/esm/vs/editor/contrib/inlineCompletions/browser/model/InlineSuggestAlternativeAction.js.map +1 -0
  149. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js +198 -0
  150. package/esm/vs/editor/contrib/inlineCompletions/browser/model/editKind.js.map +1 -0
  151. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js +40 -0
  152. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionIsVisible.js.map +1 -0
  153. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js +128 -70
  154. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsModel.js.map +1 -1
  155. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js +59 -11
  156. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineCompletionsSource.js.map +1 -1
  157. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js +152 -95
  158. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineSuggestionItem.js.map +1 -1
  159. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js +113 -54
  160. package/esm/vs/editor/contrib/inlineCompletions/browser/model/provideInlineCompletions.js.map +1 -1
  161. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js +317 -75
  162. package/esm/vs/editor/contrib/inlineCompletions/browser/model/renameSymbolProcessor.js.map +1 -1
  163. package/esm/vs/editor/contrib/inlineCompletions/browser/telemetry.js.map +1 -1
  164. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js +20 -0
  165. package/esm/vs/editor/contrib/inlineCompletions/browser/utils.js.map +1 -1
  166. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js +59 -42
  167. package/esm/vs/editor/contrib/inlineCompletions/browser/view/ghostText/ghostTextView.js.map +1 -1
  168. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js +29 -8
  169. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorMenu.js.map +1 -1
  170. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js +78 -46
  171. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/components/gutterIndicatorView.js.map +1 -1
  172. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js +9 -4
  173. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditWithChanges.js.map +1 -1
  174. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js +11 -4
  175. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsModel.js.map +1 -1
  176. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js +81 -41
  177. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsView.js.map +1 -1
  178. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js +48 -0
  179. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewInterface.js.map +1 -1
  180. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js +18 -15
  181. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViewProducer.js.map +1 -1
  182. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js +3 -4
  183. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCollapsedView.js.map +1 -1
  184. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js +6 -7
  185. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsCustomView.js.map +1 -1
  186. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js +4 -5
  187. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsDeletionView.js.map +1 -1
  188. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js +4 -3
  189. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsInsertionView.js.map +1 -1
  190. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js +8 -8
  191. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsLineReplacementView.js.map +1 -1
  192. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js +9 -7
  193. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsSideBySideView.js.map +1 -1
  194. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js +203 -41
  195. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/inlineEditsWordReplacementView.js.map +1 -1
  196. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js +189 -0
  197. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/jumpToView.js.map +1 -0
  198. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js +85 -102
  199. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/inlineEditsLongDistanceHint.js.map +1 -1
  200. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js +75 -32
  201. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistancePreviewEditor.js.map +1 -1
  202. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js +121 -0
  203. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/longDistanceHint/longDistnaceWidgetPlacement.js.map +1 -0
  204. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js +2 -1
  205. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/inlineEditsViews/originalEditorInlineDiffView.js.map +1 -1
  206. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js +22 -20
  207. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/theme.js.map +1 -1
  208. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js +15 -5
  209. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/utils/utils.js.map +1 -1
  210. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineEdits/view.css +39 -6
  211. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js +10 -5
  212. package/esm/vs/editor/contrib/inlineCompletions/browser/view/inlineSuggestionsView.js.map +1 -1
  213. package/esm/vs/editor/contrib/insertFinalNewLine/browser/insertFinalNewLine.js +1 -1
  214. package/esm/vs/editor/contrib/lineSelection/browser/lineSelection.js +1 -1
  215. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js +32 -32
  216. package/esm/vs/editor/contrib/linesOperations/browser/linesOperations.js.map +1 -1
  217. package/esm/vs/editor/contrib/linkedEditing/browser/linkedEditing.js +2 -2
  218. package/esm/vs/editor/contrib/links/browser/links.js +10 -10
  219. package/esm/vs/editor/contrib/message/browser/messageController.js +1 -1
  220. package/esm/vs/editor/contrib/multicursor/browser/multicursor.js +22 -22
  221. package/esm/vs/editor/contrib/parameterHints/browser/parameterHints.js +1 -1
  222. package/esm/vs/editor/contrib/parameterHints/browser/parameterHintsWidget.js +4 -4
  223. package/esm/vs/editor/contrib/peekView/browser/peekView.js +18 -18
  224. package/esm/vs/editor/contrib/placeholderText/browser/placeholderText.contribution.js +1 -1
  225. package/esm/vs/editor/contrib/quickAccess/browser/gotoLineQuickAccess.js +11 -11
  226. package/esm/vs/editor/contrib/quickAccess/browser/gotoSymbolQuickAccess.js +32 -32
  227. package/esm/vs/editor/contrib/readOnlyMessage/browser/contribution.js +2 -2
  228. package/esm/vs/editor/contrib/rename/browser/rename.js +19 -15
  229. package/esm/vs/editor/contrib/rename/browser/rename.js.map +1 -1
  230. package/esm/vs/editor/contrib/rename/browser/renameWidget.js +7 -7
  231. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js +3 -2
  232. package/esm/vs/editor/contrib/sectionHeaders/browser/sectionHeaders.js.map +1 -1
  233. package/esm/vs/editor/contrib/smartSelect/browser/smartSelect.js +4 -4
  234. package/esm/vs/editor/contrib/snippet/browser/snippetController2.js +4 -4
  235. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js +33 -0
  236. package/esm/vs/editor/contrib/snippet/browser/snippetParser.js.map +1 -1
  237. package/esm/vs/editor/contrib/snippet/browser/snippetVariables.js +4 -4
  238. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollActions.js +11 -11
  239. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js +12 -4
  240. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollController.js.map +1 -1
  241. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js +1 -0
  242. package/esm/vs/editor/contrib/stickyScroll/browser/stickyScrollWidget.js.map +1 -1
  243. package/esm/vs/editor/contrib/suggest/browser/suggest.js +9 -8
  244. package/esm/vs/editor/contrib/suggest/browser/suggest.js.map +1 -1
  245. package/esm/vs/editor/contrib/suggest/browser/suggestController.js +39 -28
  246. package/esm/vs/editor/contrib/suggest/browser/suggestController.js.map +1 -1
  247. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js +1 -0
  248. package/esm/vs/editor/contrib/suggest/browser/suggestInlineCompletions.js.map +1 -1
  249. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js +22 -18
  250. package/esm/vs/editor/contrib/suggest/browser/suggestWidget.js.map +1 -1
  251. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js +28 -6
  252. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetDetails.js.map +1 -1
  253. package/esm/vs/editor/contrib/suggest/browser/suggestWidgetRenderer.js +2 -2
  254. package/esm/vs/editor/contrib/suggest/browser/wordContextKey.js +1 -1
  255. package/esm/vs/editor/contrib/symbolIcons/browser/symbolIcons.js +33 -33
  256. package/esm/vs/editor/contrib/toggleTabFocusMode/browser/toggleTabFocusMode.js +4 -4
  257. package/esm/vs/editor/contrib/tokenization/browser/tokenization.js +1 -1
  258. package/esm/vs/editor/contrib/unicodeHighlighter/browser/bannerController.js +1 -1
  259. package/esm/vs/editor/contrib/unicodeHighlighter/browser/unicodeHighlighter.js +24 -24
  260. package/esm/vs/editor/contrib/unusualLineTerminators/browser/unusualLineTerminators.js +5 -5
  261. package/esm/vs/editor/contrib/wordHighlighter/browser/highlightDecorations.js +9 -9
  262. package/esm/vs/editor/contrib/wordHighlighter/browser/wordHighlighter.js +3 -3
  263. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js +19 -2
  264. package/esm/vs/editor/contrib/wordOperations/browser/wordOperations.js.map +1 -1
  265. package/esm/vs/editor/editor.api.d.ts +34 -3
  266. package/esm/vs/editor/standalone/browser/standaloneLanguages.js +2 -2
  267. package/esm/vs/editor/standalone/browser/standaloneLanguages.js.map +1 -1
  268. package/esm/vs/editor/standalone/browser/standaloneServices.js +11 -1
  269. package/esm/vs/editor/standalone/browser/standaloneServices.js.map +1 -1
  270. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js +1 -1
  271. package/esm/vs/editor/standalone/common/monarch/monarchLexer.js.map +1 -1
  272. package/esm/vs/platform/accessibilitySignal/browser/accessibilitySignalService.js +62 -62
  273. package/esm/vs/platform/action/common/actionCommonCategories.js +6 -6
  274. package/esm/vs/platform/actionWidget/browser/actionList.js +4 -4
  275. package/esm/vs/platform/actionWidget/browser/actionWidget.css +11 -8
  276. package/esm/vs/platform/actionWidget/browser/actionWidget.js +7 -7
  277. package/esm/vs/platform/actions/browser/menuEntryActionViewItem.js +5 -5
  278. package/esm/vs/platform/actions/browser/toolbar.js +2 -2
  279. package/esm/vs/platform/actions/common/actions.js +11 -5
  280. package/esm/vs/platform/actions/common/actions.js.map +1 -1
  281. package/esm/vs/platform/actions/common/menuService.js +2 -2
  282. package/esm/vs/platform/configuration/common/configurationRegistry.js +10 -10
  283. package/esm/vs/platform/contextkey/browser/contextKeyService.js +1 -1
  284. package/esm/vs/platform/contextkey/common/contextkey.js +9 -9
  285. package/esm/vs/platform/contextkey/common/contextkeys.js +9 -9
  286. package/esm/vs/platform/contextkey/common/scanner.js +5 -5
  287. package/esm/vs/platform/{product/common/productService.js → defaultAccount/common/defaultAccount.js} +2 -2
  288. package/esm/vs/platform/defaultAccount/common/defaultAccount.js.map +1 -0
  289. package/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +1 -1
  290. package/esm/vs/platform/hover/browser/hoverWidget.js +1 -1
  291. package/esm/vs/platform/hover/browser/updatableHoverWidget.js +1 -1
  292. package/esm/vs/platform/instantiation/common/instantiation.js.map +1 -1
  293. package/esm/vs/platform/instantiation/common/instantiationService.js +1 -8
  294. package/esm/vs/platform/instantiation/common/instantiationService.js.map +1 -1
  295. package/esm/vs/platform/keybinding/common/abstractKeybindingService.js +4 -4
  296. package/esm/vs/platform/list/browser/listService.js +27 -27
  297. package/esm/vs/platform/log/common/log.js +1 -1
  298. package/esm/vs/platform/log/common/log.js.map +1 -1
  299. package/esm/vs/platform/markers/common/markerService.js +6 -6
  300. package/esm/vs/platform/markers/common/markerService.js.map +1 -1
  301. package/esm/vs/platform/markers/common/markers.js +6 -6
  302. package/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +8 -8
  303. package/esm/vs/platform/quickinput/browser/helpQuickAccess.js +1 -1
  304. package/esm/vs/platform/quickinput/browser/media/quickInput.css +7 -3
  305. package/esm/vs/platform/quickinput/browser/quickInput.js +19 -11
  306. package/esm/vs/platform/quickinput/browser/quickInput.js.map +1 -1
  307. package/esm/vs/platform/quickinput/browser/quickInputActions.js +5 -5
  308. package/esm/vs/platform/quickinput/browser/quickInputController.js +6 -6
  309. package/esm/vs/platform/quickinput/browser/quickInputList.js +1 -1
  310. package/esm/vs/platform/quickinput/browser/quickInputUtils.js +1 -1
  311. package/esm/vs/platform/quickinput/browser/tree/quickInputTreeAccessibilityProvider.js +1 -1
  312. package/esm/vs/platform/theme/common/colorUtils.js +2 -2
  313. package/esm/vs/platform/theme/common/colors/baseColors.js +18 -17
  314. package/esm/vs/platform/theme/common/colors/baseColors.js.map +1 -1
  315. package/esm/vs/platform/theme/common/colors/chartsColors.js +8 -8
  316. package/esm/vs/platform/theme/common/colors/editorColors.js +95 -95
  317. package/esm/vs/platform/theme/common/colors/inputColors.js +47 -47
  318. package/esm/vs/platform/theme/common/colors/listColors.js +36 -36
  319. package/esm/vs/platform/theme/common/colors/menuColors.js +7 -7
  320. package/esm/vs/platform/theme/common/colors/minimapColors.js +13 -13
  321. package/esm/vs/platform/theme/common/colors/minimapColors.js.map +1 -1
  322. package/esm/vs/platform/theme/common/colors/miscColors.js +16 -16
  323. package/esm/vs/platform/theme/common/colors/quickpickColors.js +9 -9
  324. package/esm/vs/platform/theme/common/colors/searchColors.js +3 -3
  325. package/esm/vs/platform/theme/common/iconRegistry.js +6 -6
  326. package/esm/vs/platform/undoRedo/common/undoRedoService.js +21 -21
  327. package/esm/vs/platform/undoRedo/common/undoRedoService.js.map +1 -1
  328. package/esm/vs/platform/window/common/window.js +1 -1
  329. package/esm/vs/platform/window/common/window.js.map +1 -1
  330. package/esm/vs/platform/workspace/common/workspace.js +1 -1
  331. package/monaco.d.ts +34 -3
  332. package/package.json +2 -2
  333. package/version.txt +1 -1
  334. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js +0 -16
  335. package/esm/vs/editor/contrib/inlineCompletions/browser/model/inlineEdit.js.map +0 -1
  336. package/esm/vs/platform/product/common/productService.js.map +0 -1
@@ -17,9 +17,7 @@ import { isNonEmptyArray } from '../../../../base/common/arrays.js';
17
17
  import { CancellationTokenSource } from '../../../../base/common/cancellation.js';
18
18
  import { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';
19
19
  import { Emitter, Event } from '../../../../base/common/event.js';
20
- import { KeyCodeChord } from '../../../../base/common/keybindings.js';
21
20
  import { DisposableStore, dispose, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';
22
- import * as platform from '../../../../base/common/platform.js';
23
21
  import { StopWatch } from '../../../../base/common/stopwatch.js';
24
22
  import { assertType, isObject } from '../../../../base/common/types.js';
25
23
  import { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';
@@ -171,17 +169,6 @@ let SuggestController = class SuggestController {
171
169
  // (ctx: canResolve)
172
170
  ctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);
173
171
  }));
174
- this._toDispose.add(widget.onDetailsKeyDown(e => {
175
- // cmd + c on macOS, ctrl + c on Win / Linux
176
- if (e.toKeyCodeChord().equals(new KeyCodeChord(true, false, false, false, 33 /* KeyCode.KeyC */)) ||
177
- (platform.isMacintosh && e.toKeyCodeChord().equals(new KeyCodeChord(false, false, false, true, 33 /* KeyCode.KeyC */)))) {
178
- e.stopPropagation();
179
- return;
180
- }
181
- if (!e.toKeyCodeChord().isModifierKey()) {
182
- this.editor.focus();
183
- }
184
- }));
185
172
  if (this._wantsForceRenderingAbove) {
186
173
  widget.forceRenderingAbove();
187
174
  }
@@ -482,7 +469,7 @@ let SuggestController = class SuggestController {
482
469
  }
483
470
  _alertCompletionItem(item) {
484
471
  if (isNonEmptyArray(item.completion.additionalTextEdits)) {
485
- const msg = nls.localize(1471, "Accepting '{0}' made {1} additional edits", item.textLabel, item.completion.additionalTextEdits.length);
472
+ const msg = nls.localize(1478, "Accepting '{0}' made {1} additional edits", item.textLabel, item.completion.additionalTextEdits.length);
486
473
  alert(msg);
487
474
  }
488
475
  }
@@ -669,7 +656,7 @@ export class TriggerSuggestAction extends EditorAction {
669
656
  constructor() {
670
657
  super({
671
658
  id: TriggerSuggestAction.id,
672
- label: nls.localize2(1479, "Trigger Suggest"),
659
+ label: nls.localize2(1487, "Trigger Suggest"),
673
660
  precondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider, SuggestContext.Visible.toNegated()),
674
661
  kbOpts: {
675
662
  kbExpr: EditorContextKeys.textInputFocus,
@@ -717,22 +704,22 @@ registerEditorCommand(new SuggestCommand({
717
704
  }],
718
705
  menuOpts: [{
719
706
  menuId: suggestWidgetStatusbarMenu,
720
- title: nls.localize(1472, "Insert"),
707
+ title: nls.localize(1479, "Insert"),
721
708
  group: 'left',
722
709
  order: 1,
723
- when: SuggestContext.HasInsertAndReplaceRange.toNegated()
710
+ when: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange.toNegated())
724
711
  }, {
725
712
  menuId: suggestWidgetStatusbarMenu,
726
- title: nls.localize(1473, "Insert"),
713
+ title: nls.localize(1480, "Insert"),
727
714
  group: 'left',
728
715
  order: 1,
729
- when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))
716
+ when: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))
730
717
  }, {
731
718
  menuId: suggestWidgetStatusbarMenu,
732
- title: nls.localize(1474, "Replace"),
719
+ title: nls.localize(1481, "Replace"),
733
720
  group: 'left',
734
721
  order: 1,
735
- when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))
722
+ when: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))
736
723
  }]
737
724
  }));
738
725
  registerEditorCommand(new SuggestCommand({
@@ -751,14 +738,14 @@ registerEditorCommand(new SuggestCommand({
751
738
  menuId: suggestWidgetStatusbarMenu,
752
739
  group: 'left',
753
740
  order: 2,
754
- when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),
755
- title: nls.localize(1475, "Replace")
741
+ when: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),
742
+ title: nls.localize(1482, "Replace")
756
743
  }, {
757
744
  menuId: suggestWidgetStatusbarMenu,
758
745
  group: 'left',
759
746
  order: 2,
760
- when: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),
761
- title: nls.localize(1476, "Insert")
747
+ when: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),
748
+ title: nls.localize(1483, "Insert")
762
749
  }]
763
750
  }));
764
751
  // continue to support the old command
@@ -784,6 +771,13 @@ registerEditorCommand(new SuggestCommand({
784
771
  primary: 18 /* KeyCode.DownArrow */,
785
772
  secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */],
786
773
  mac: { primary: 18 /* KeyCode.DownArrow */, secondary: [2048 /* KeyMod.CtrlCmd */ | 18 /* KeyCode.DownArrow */, 256 /* KeyMod.WinCtrl */ | 44 /* KeyCode.KeyN */] }
774
+ },
775
+ menuOpts: {
776
+ menuId: suggestWidgetStatusbarMenu,
777
+ group: 'left',
778
+ order: 0,
779
+ when: SuggestContext.HasFocusedSuggestion.toNegated(),
780
+ title: nls.localize(1484, "Select")
787
781
  }
788
782
  }));
789
783
  registerEditorCommand(new SuggestCommand({
@@ -866,13 +860,13 @@ registerEditorCommand(new SuggestCommand({
866
860
  group: 'right',
867
861
  order: 1,
868
862
  when: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),
869
- title: nls.localize(1477, "Show Less")
863
+ title: nls.localize(1485, "Show Less")
870
864
  }, {
871
865
  menuId: suggestWidgetStatusbarMenu,
872
866
  group: 'right',
873
867
  order: 1,
874
868
  when: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),
875
- title: nls.localize(1478, "Show More")
869
+ title: nls.localize(1486, "Show More")
876
870
  }]
877
871
  }));
878
872
  registerEditorCommand(new SuggestCommand({
@@ -927,11 +921,28 @@ registerEditorCommand(new SuggestCommand({
927
921
  primary: 1024 /* KeyMod.Shift */ | 2 /* KeyCode.Tab */
928
922
  }
929
923
  }));
924
+ registerEditorCommand(new class extends EditorCommand {
925
+ constructor() {
926
+ super({
927
+ id: 'suggestWidgetCopy',
928
+ precondition: SuggestContext.DetailsFocused,
929
+ kbOpts: {
930
+ weight: weight + 10,
931
+ kbExpr: SuggestContext.DetailsFocused,
932
+ primary: 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */,
933
+ win: { primary: 2048 /* KeyMod.CtrlCmd */ | 33 /* KeyCode.KeyC */, secondary: [2048 /* KeyMod.CtrlCmd */ | 19 /* KeyCode.Insert */] }
934
+ }
935
+ });
936
+ }
937
+ runEditorCommand(_accessor, editor) {
938
+ getWindow(editor.getDomNode()).document.execCommand('copy');
939
+ }
940
+ }());
930
941
  registerEditorAction(class extends EditorAction {
931
942
  constructor() {
932
943
  super({
933
944
  id: 'editor.action.resetSuggestSize',
934
- label: nls.localize2(1480, "Reset Suggest Widget Size"),
945
+ label: nls.localize2(1488, "Reset Suggest Widget Size"),
935
946
  precondition: undefined
936
947
  });
937
948
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["vs/editor/contrib/suggest/browser/suggestController.ts"],"names":[],"mappings":"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","file":"suggestController.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 { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { KeyCodeChord } from '../../../../base/common/keybindings.js';\nimport { DisposableStore, dispose, IDisposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport * as platform from '../../../../base/common/platform.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isObject } from '../../../../base/common/types.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorCommand, EditorContributionInstantiation, registerEditorAction, registerEditorCommand, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextModel, TrackedRangeStickiness } from '../../../common/model.js';\nimport { CompletionItemInsertTextRule, CompletionItemProvider, CompletionTriggerKind, ProviderId } from '../../../common/languages.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { ISuggestMemoryService } from './suggestMemory.js';\nimport { WordContextKey } from './wordContextKey.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { CompletionItem, Context as SuggestContext, ISuggestItemPreselector, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { SuggestAlternatives } from './suggestAlternatives.js';\nimport { CommitCharacterController } from './suggestCommitCharacters.js';\nimport { State, SuggestModel } from './suggestModel.js';\nimport { OvertypingCapturer } from './suggestOvertypingCapturer.js';\nimport { ISelectedSuggestion, SuggestWidget } from './suggestWidget.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { basename, extname } from '../../../../base/common/resources.js';\nimport { hash } from '../../../../base/common/hash.js';\nimport { WindowIdleValue, getWindow } from '../../../../base/browser/dom.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { EditSources } from '../../../common/textModelEditSource.js';\n\n// sticky suggest widget which doesn't disappear on focus out and such\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\nclass LineSuffix {\n\n\tprivate readonly _decorationOptions = ModelDecorationOptions.register({\n\t\tdescription: 'suggest-line-suffix',\n\t\tstickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges\n\t});\n\n\tprivate _marker: string | undefined;\n\n\tconstructor(private readonly _model: ITextModel, private readonly _position: IPosition) {\n\t\t// spy on what's happening right of the cursor. two cases:\n\t\t// 1. end of line -> check that it's still end of line\n\t\t// 2. mid of line -> add a marker and compute the delta\n\t\tconst maxColumn = _model.getLineMaxColumn(_position.lineNumber);\n\t\tif (maxColumn !== _position.column) {\n\t\t\tconst offset = _model.getOffsetAt(_position);\n\t\t\tconst end = _model.getPositionAt(offset + 1);\n\t\t\t_model.changeDecorations(accessor => {\n\t\t\t\tif (this._marker) {\n\t\t\t\t\taccessor.removeDecoration(this._marker);\n\t\t\t\t}\n\t\t\t\tthis._marker = accessor.addDecoration(Range.fromPositions(_position, end), this._decorationOptions);\n\t\t\t});\n\t\t}\n\t}\n\n\tdispose(): void {\n\t\tif (this._marker && !this._model.isDisposed()) {\n\t\t\tthis._model.changeDecorations(accessor => {\n\t\t\t\taccessor.removeDecoration(this._marker!);\n\t\t\t\tthis._marker = undefined;\n\t\t\t});\n\t\t}\n\t}\n\n\tdelta(position: IPosition): number {\n\t\tif (this._model.isDisposed() || this._position.lineNumber !== position.lineNumber) {\n\t\t\t// bail out early if things seems fishy\n\t\t\treturn 0;\n\t\t}\n\t\t// read the marker (in case suggest was triggered at line end) or compare\n\t\t// the cursor to the line end.\n\t\tif (this._marker) {\n\t\t\tconst range = this._model.getDecorationRange(this._marker);\n\t\t\tconst end = this._model.getOffsetAt(range!.getStartPosition());\n\t\t\treturn end - this._model.getOffsetAt(position);\n\t\t} else {\n\t\t\treturn this._model.getLineMaxColumn(position.lineNumber) - position.column;\n\t\t}\n\t}\n}\n\nconst enum InsertFlags {\n\tNone = 0,\n\tNoBeforeUndoStop = 1,\n\tNoAfterUndoStop = 2,\n\tKeepAlternativeSuggestions = 4,\n\tAlternativeOverwriteConfig = 8\n}\n\nexport class SuggestController implements IEditorContribution {\n\n\tpublic static readonly ID: string = 'editor.contrib.suggestController';\n\n\tpublic static get(editor: ICodeEditor): SuggestController | null {\n\t\treturn editor.getContribution<SuggestController>(SuggestController.ID);\n\t}\n\n\treadonly editor: ICodeEditor;\n\treadonly model: SuggestModel;\n\treadonly widget: WindowIdleValue<SuggestWidget>;\n\n\tprivate readonly _alternatives: WindowIdleValue<SuggestAlternatives>;\n\tprivate readonly _lineSuffix = new MutableDisposable<LineSuffix>();\n\tprivate readonly _toDispose = new DisposableStore();\n\tprivate readonly _overtypingCapturer: WindowIdleValue<OvertypingCapturer>;\n\tprivate readonly _selectors = new PriorityRegistry<ISuggestItemPreselector>(s => s.priority);\n\n\tprivate readonly _onWillInsertSuggestItem = new Emitter<{ item: CompletionItem }>();\n\tget onWillInsertSuggestItem() { return this._onWillInsertSuggestItem.event; }\n\n\tprivate _wantsForceRenderingAbove = false;\n\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ISuggestMemoryService private readonly _memoryService: ISuggestMemoryService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t\t@ITelemetryService private readonly _telemetryService: ITelemetryService,\n\t) {\n\t\tthis.editor = editor;\n\t\tthis.model = _instantiationService.createInstance(SuggestModel, this.editor,);\n\n\t\t// default selector\n\t\tthis._selectors.register({\n\t\t\tpriority: 0,\n\t\t\tselect: (model, pos, items) => this._memoryService.select(model, pos, items)\n\t\t});\n\n\t\t// context key: update insert/replace mode\n\t\tconst ctxInsertMode = SuggestContext.InsertMode.bindTo(_contextKeyService);\n\t\tctxInsertMode.set(editor.getOption(EditorOption.suggest).insertMode);\n\t\tthis._toDispose.add(this.model.onDidTrigger(() => ctxInsertMode.set(editor.getOption(EditorOption.suggest).insertMode)));\n\n\t\tthis.widget = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n\n\t\t\tconst widget = this._instantiationService.createInstance(SuggestWidget, this.editor);\n\n\t\t\tthis._toDispose.add(widget);\n\t\t\tthis._toDispose.add(widget.onDidSelect(item => this._insertSuggestion(item, InsertFlags.None), this));\n\n\t\t\t// Wire up logic to accept a suggestion on certain characters\n\t\t\tconst commitCharacterController = new CommitCharacterController(this.editor, widget, this.model, item => this._insertSuggestion(item, InsertFlags.NoAfterUndoStop));\n\t\t\tthis._toDispose.add(commitCharacterController);\n\n\n\t\t\t// Wire up makes text edit context key\n\t\t\tconst ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);\n\t\t\tconst ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);\n\t\t\tconst ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);\n\n\t\t\tthis._toDispose.add(toDisposable(() => {\n\t\t\t\tctxMakesTextEdit.reset();\n\t\t\t\tctxHasInsertAndReplace.reset();\n\t\t\t\tctxCanResolve.reset();\n\t\t\t}));\n\n\t\t\tthis._toDispose.add(widget.onDidFocus(({ item }) => {\n\n\t\t\t\t// (ctx: makesTextEdit)\n\t\t\t\tconst position = this.editor.getPosition()!;\n\t\t\t\tconst startColumn = item.editStart.column;\n\t\t\t\tconst endColumn = position.column;\n\t\t\t\tlet value = true;\n\t\t\t\tif (\n\t\t\t\t\tthis.editor.getOption(EditorOption.acceptSuggestionOnEnter) === 'smart'\n\t\t\t\t\t&& this.model.state === State.Auto\n\t\t\t\t\t&& !item.completion.additionalTextEdits\n\t\t\t\t\t&& !(item.completion.insertTextRules! & CompletionItemInsertTextRule.InsertAsSnippet)\n\t\t\t\t\t&& endColumn - startColumn === item.completion.insertText.length\n\t\t\t\t) {\n\t\t\t\t\tconst oldText = this.editor.getModel()!.getValueInRange({\n\t\t\t\t\t\tstartLineNumber: position.lineNumber,\n\t\t\t\t\t\tstartColumn,\n\t\t\t\t\t\tendLineNumber: position.lineNumber,\n\t\t\t\t\t\tendColumn\n\t\t\t\t\t});\n\t\t\t\t\tvalue = oldText !== item.completion.insertText;\n\t\t\t\t}\n\t\t\t\tctxMakesTextEdit.set(value);\n\n\t\t\t\t// (ctx: hasInsertAndReplaceRange)\n\t\t\t\tctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));\n\n\t\t\t\t// (ctx: canResolve)\n\t\t\t\tctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);\n\t\t\t}));\n\n\t\t\tthis._toDispose.add(widget.onDetailsKeyDown(e => {\n\t\t\t\t// cmd + c on macOS, ctrl + c on Win / Linux\n\t\t\t\tif (\n\t\t\t\t\te.toKeyCodeChord().equals(new KeyCodeChord(true, false, false, false, KeyCode.KeyC)) ||\n\t\t\t\t\t(platform.isMacintosh && e.toKeyCodeChord().equals(new KeyCodeChord(false, false, false, true, KeyCode.KeyC)))\n\t\t\t\t) {\n\t\t\t\t\te.stopPropagation();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (!e.toKeyCodeChord().isModifierKey()) {\n\t\t\t\t\tthis.editor.focus();\n\t\t\t\t}\n\t\t\t}));\n\n\t\t\tif (this._wantsForceRenderingAbove) {\n\t\t\t\twidget.forceRenderingAbove();\n\t\t\t}\n\n\t\t\treturn widget;\n\t\t}));\n\n\t\t// Wire up text overtyping capture\n\t\tthis._overtypingCapturer = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n\t\t\treturn this._toDispose.add(new OvertypingCapturer(this.editor, this.model));\n\t\t}));\n\n\t\tthis._alternatives = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n\t\t\treturn this._toDispose.add(new SuggestAlternatives(this.editor, this._contextKeyService));\n\t\t}));\n\n\t\tthis._toDispose.add(_instantiationService.createInstance(WordContextKey, editor));\n\n\t\tthis._toDispose.add(this.model.onDidTrigger(e => {\n\t\t\tthis.widget.value.showTriggered(e.auto, e.shy ? 250 : 50);\n\t\t\tthis._lineSuffix.value = new LineSuffix(this.editor.getModel()!, e.position);\n\t\t}));\n\t\tthis._toDispose.add(this.model.onDidSuggest(e => {\n\t\t\tif (e.triggerOptions.shy) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet index = -1;\n\t\t\tfor (const selector of this._selectors.itemsOrderedByPriorityDesc) {\n\t\t\t\tindex = selector.select(this.editor.getModel()!, this.editor.getPosition()!, e.completionModel.items);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (index === -1) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif (this.model.state === State.Idle) {\n\t\t\t\t// selecting an item can \"pump\" out selection/cursor change events\n\t\t\t\t// which can cancel suggest halfway through this function. therefore\n\t\t\t\t// we need to check again and bail if the session has been canceled\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet noFocus = false;\n\t\t\tif (e.triggerOptions.auto) {\n\t\t\t\t// don't \"focus\" item when configured to do\n\t\t\t\tconst options = this.editor.getOption(EditorOption.suggest);\n\t\t\t\tif (options.selectionMode === 'never' || options.selectionMode === 'always') {\n\t\t\t\t\t// simple: always or never\n\t\t\t\t\tnoFocus = options.selectionMode === 'never';\n\n\t\t\t\t} else if (options.selectionMode === 'whenTriggerCharacter') {\n\t\t\t\t\t// on with trigger character\n\t\t\t\t\tnoFocus = e.triggerOptions.triggerKind !== CompletionTriggerKind.TriggerCharacter;\n\n\t\t\t\t} else if (options.selectionMode === 'whenQuickSuggestion') {\n\t\t\t\t\t// without trigger character or when refiltering\n\t\t\t\t\tnoFocus = e.triggerOptions.triggerKind === CompletionTriggerKind.TriggerCharacter && !e.triggerOptions.refilter;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis.widget.value.showSuggestions(e.completionModel, index, e.isFrozen, e.triggerOptions.auto, noFocus);\n\t\t}));\n\t\tthis._toDispose.add(this.model.onDidCancel(e => {\n\t\t\tif (!e.retrigger) {\n\t\t\t\tthis.widget.value.hideWidget();\n\t\t\t}\n\t\t}));\n\t\tthis._toDispose.add(this.editor.onDidBlurEditorWidget(() => {\n\t\t\tif (!_sticky) {\n\t\t\t\tthis.model.cancel();\n\t\t\t\tthis.model.clear();\n\t\t\t}\n\t\t}));\n\n\t\t// Manage the acceptSuggestionsOnEnter context key\n\t\tconst acceptSuggestionsOnEnter = SuggestContext.AcceptSuggestionsOnEnter.bindTo(_contextKeyService);\n\t\tconst updateFromConfig = () => {\n\t\t\tconst acceptSuggestionOnEnter = this.editor.getOption(EditorOption.acceptSuggestionOnEnter);\n\t\t\tacceptSuggestionsOnEnter.set(acceptSuggestionOnEnter === 'on' || acceptSuggestionOnEnter === 'smart');\n\t\t};\n\t\tthis._toDispose.add(this.editor.onDidChangeConfiguration(() => updateFromConfig()));\n\t\tupdateFromConfig();\n\t}\n\n\tdispose(): void {\n\t\tthis._alternatives.dispose();\n\t\tthis._toDispose.dispose();\n\t\tthis.widget.dispose();\n\t\tthis.model.dispose();\n\t\tthis._lineSuffix.dispose();\n\t\tthis._onWillInsertSuggestItem.dispose();\n\t}\n\n\tprotected _insertSuggestion(\n\t\tevent: ISelectedSuggestion | undefined,\n\t\tflags: InsertFlags\n\t): void {\n\t\tif (!event || !event.item) {\n\t\t\tthis._alternatives.value.reset();\n\t\t\tthis.model.cancel();\n\t\t\tthis.model.clear();\n\t\t\treturn;\n\t\t}\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst snippetController = SnippetController2.get(this.editor);\n\t\tif (!snippetController) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._onWillInsertSuggestItem.fire({ item: event.item });\n\n\t\tconst model = this.editor.getModel();\n\t\tconst modelVersionNow = model.getAlternativeVersionId();\n\t\tconst { item } = event;\n\n\t\t//\n\t\tconst tasks: Promise<unknown>[] = [];\n\t\tconst cts = new CancellationTokenSource();\n\n\t\t// pushing undo stops *before* additional text edits and\n\t\t// *after* the main edit\n\t\tif (!(flags & InsertFlags.NoBeforeUndoStop)) {\n\t\t\tthis.editor.pushUndoStop();\n\t\t}\n\n\t\t// compute overwrite[Before|After] deltas BEFORE applying extra edits\n\t\tconst info = this.getOverwriteInfo(item, Boolean(flags & InsertFlags.AlternativeOverwriteConfig));\n\n\t\t// keep item in memory\n\t\tthis._memoryService.memorize(model, this.editor.getPosition(), item);\n\n\t\tconst isResolved = item.isResolved;\n\n\t\t// telemetry data points: duration of command execution, info about async additional edits (-1=n/a, -2=none, 1=success, 0=failed)\n\t\tlet _commandExectionDuration = -1;\n\t\tlet _additionalEditsAppliedAsync = -1;\n\n\t\tif (Array.isArray(item.completion.additionalTextEdits)) {\n\n\t\t\t// cancel -> stops all listening and closes widget\n\t\t\tthis.model.cancel();\n\n\t\t\t// sync additional edits\n\t\t\tconst scrollState = StableEditorScrollState.capture(this.editor);\n\t\t\tthis.editor.executeEdits(\n\t\t\t\t'suggestController.additionalTextEdits.sync',\n\t\t\t\titem.completion.additionalTextEdits.map(edit => {\n\t\t\t\t\tlet range = Range.lift(edit.range);\n\t\t\t\t\tif (range.startLineNumber === item.position.lineNumber && range.startColumn > item.position.column) {\n\t\t\t\t\t\t// shift additional edit when it is \"after\" the completion insertion position\n\t\t\t\t\t\tconst columnDelta = this.editor.getPosition()!.column - item.position.column;\n\t\t\t\t\t\tconst startColumnDelta = columnDelta;\n\t\t\t\t\t\tconst endColumnDelta = Range.spansMultipleLines(range) ? 0 : columnDelta;\n\t\t\t\t\t\trange = new Range(range.startLineNumber, range.startColumn + startColumnDelta, range.endLineNumber, range.endColumn + endColumnDelta);\n\t\t\t\t\t}\n\t\t\t\t\treturn EditOperation.replaceMove(range, edit.text);\n\t\t\t\t})\n\t\t\t);\n\t\t\tscrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n\n\t\t} else if (!isResolved) {\n\t\t\t// async additional edits\n\t\t\tconst sw = new StopWatch();\n\t\t\tlet position: IPosition | undefined;\n\n\t\t\tconst docListener = model.onDidChangeContent(e => {\n\t\t\t\tif (e.isFlush) {\n\t\t\t\t\tcts.cancel();\n\t\t\t\t\tdocListener.dispose();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (const change of e.changes) {\n\t\t\t\t\tconst thisPosition = Range.getEndPosition(change.range);\n\t\t\t\t\tif (!position || Position.isBefore(thisPosition, position)) {\n\t\t\t\t\t\tposition = thisPosition;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst oldFlags = flags;\n\t\t\tflags |= InsertFlags.NoAfterUndoStop;\n\t\t\tlet didType = false;\n\t\t\tconst typeListener = this.editor.onWillType(() => {\n\t\t\t\ttypeListener.dispose();\n\t\t\t\tdidType = true;\n\t\t\t\tif (!(oldFlags & InsertFlags.NoAfterUndoStop)) {\n\t\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\ttasks.push(item.resolve(cts.token).then(() => {\n\t\t\t\tif (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tif (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position!, Range.getStartPosition(edit.range)))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (didType) {\n\t\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\t}\n\t\t\t\tconst scrollState = StableEditorScrollState.capture(this.editor);\n\t\t\t\tthis.editor.executeEdits(\n\t\t\t\t\t'suggestController.additionalTextEdits.async',\n\t\t\t\t\titem.completion.additionalTextEdits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text))\n\t\t\t\t);\n\t\t\t\tscrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n\t\t\t\tif (didType || !(oldFlags & InsertFlags.NoAfterUndoStop)) {\n\t\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}).then(applied => {\n\t\t\t\tthis._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);\n\t\t\t\t_additionalEditsAppliedAsync = applied === true ? 1 : applied === false ? 0 : -2;\n\t\t\t}).finally(() => {\n\t\t\t\tdocListener.dispose();\n\t\t\t\ttypeListener.dispose();\n\t\t\t}));\n\t\t}\n\n\t\tlet { insertText } = item.completion;\n\t\tif (!(item.completion.insertTextRules! & CompletionItemInsertTextRule.InsertAsSnippet)) {\n\t\t\tinsertText = SnippetParser.escape(insertText);\n\t\t}\n\n\t\t// cancel -> stops all listening and closes widget\n\t\tthis.model.cancel();\n\n\t\tsnippetController.insert(insertText, {\n\t\t\toverwriteBefore: info.overwriteBefore,\n\t\t\toverwriteAfter: info.overwriteAfter,\n\t\t\tundoStopBefore: false,\n\t\t\tundoStopAfter: false,\n\t\t\tadjustWhitespace: !(item.completion.insertTextRules! & CompletionItemInsertTextRule.KeepWhitespace),\n\t\t\tclipboardText: event.model.clipboardText,\n\t\t\tovertypingCapturer: this._overtypingCapturer.value,\n\t\t\treason: EditSources.suggest({ providerId: ProviderId.fromExtensionId(item.extensionId?.value) }),\n\t\t});\n\n\t\tif (!(flags & InsertFlags.NoAfterUndoStop)) {\n\t\t\tthis.editor.pushUndoStop();\n\t\t}\n\n\t\tif (item.completion.command) {\n\t\t\tif (item.completion.command.id === TriggerSuggestAction.id) {\n\t\t\t\t// retigger\n\t\t\t\tthis.model.trigger({ auto: true, retrigger: true });\n\t\t\t} else {\n\t\t\t\t// exec command, done\n\t\t\t\tconst sw = new StopWatch();\n\t\t\t\ttasks.push(this._commandService.executeCommand(item.completion.command.id, ...(item.completion.command.arguments ? [...item.completion.command.arguments] : [])).catch(e => {\n\t\t\t\t\tif (item.completion.extensionId) {\n\t\t\t\t\t\tonUnexpectedExternalError(e);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonUnexpectedError(e);\n\t\t\t\t\t}\n\t\t\t\t}).finally(() => {\n\t\t\t\t\t_commandExectionDuration = sw.elapsed();\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\n\t\tif (flags & InsertFlags.KeepAlternativeSuggestions) {\n\t\t\tthis._alternatives.value.set(event, next => {\n\n\t\t\t\t// cancel resolving of additional edits\n\t\t\t\tcts.cancel();\n\n\t\t\t\t// this is not so pretty. when inserting the 'next'\n\t\t\t\t// suggestion we undo until we are at the state at\n\t\t\t\t// which we were before inserting the previous suggestion...\n\t\t\t\twhile (model.canUndo()) {\n\t\t\t\t\tif (modelVersionNow !== model.getAlternativeVersionId()) {\n\t\t\t\t\t\tmodel.undo();\n\t\t\t\t\t}\n\t\t\t\t\tthis._insertSuggestion(\n\t\t\t\t\t\tnext,\n\t\t\t\t\t\tInsertFlags.NoBeforeUndoStop | InsertFlags.NoAfterUndoStop | (flags & InsertFlags.AlternativeOverwriteConfig ? InsertFlags.AlternativeOverwriteConfig : 0)\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._alertCompletionItem(item);\n\n\t\t// clear only now - after all tasks are done\n\t\tPromise.all(tasks).finally(() => {\n\t\t\tthis._reportSuggestionAcceptedTelemetry(item, model, isResolved, _commandExectionDuration, _additionalEditsAppliedAsync, event.index, event.model.items);\n\n\t\t\tthis.model.clear();\n\t\t\tcts.dispose();\n\t\t});\n\t}\n\n\tprivate _reportSuggestionAcceptedTelemetry(item: CompletionItem, model: ITextModel, itemResolved: boolean, commandExectionDuration: number, additionalEditsAppliedAsync: number, index: number, completionItems: CompletionItem[]): void {\n\t\tif (Math.random() > 0.0001) { // 0.01%\n\t\t\treturn;\n\t\t}\n\n\t\tconst labelMap = new Map<string, number[]>();\n\n\t\tfor (let i = 0; i < Math.min(30, completionItems.length); i++) {\n\t\t\tconst label = completionItems[i].textLabel;\n\n\t\t\tif (labelMap.has(label)) {\n\t\t\t\tlabelMap.get(label)!.push(i);\n\t\t\t} else {\n\t\t\t\tlabelMap.set(label, [i]);\n\t\t\t}\n\t\t}\n\n\t\tconst firstIndexArray = labelMap.get(item.textLabel);\n\t\tconst hasDuplicates = firstIndexArray && firstIndexArray.length > 1;\n\t\tconst firstIndex = hasDuplicates ? firstIndexArray[0] : -1;\n\n\t\ttype AcceptedSuggestion = {\n\t\t\textensionId: string; providerId: string;\n\t\t\tfileExtension: string; languageId: string; basenameHash: string; kind: number;\n\t\t\tresolveInfo: number; resolveDuration: number;\n\t\t\tcommandDuration: number;\n\t\t\tadditionalEditsAsync: number;\n\t\t\tindex: number; firstIndex: number;\n\t\t};\n\t\ttype AcceptedSuggestionClassification = {\n\t\t\towner: 'jrieken';\n\t\t\tcomment: 'Information accepting completion items';\n\t\t\textensionId: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'Extension contributing the completions item' };\n\t\t\tproviderId: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'Provider of the completions item' };\n\t\t\tbasenameHash: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'Hash of the basename of the file into which the completion was inserted' };\n\t\t\tfileExtension: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'File extension of the file into which the completion was inserted' };\n\t\t\tlanguageId: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Language type of the file into which the completion was inserted' };\n\t\t\tkind: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The completion item kind' };\n\t\t\tresolveInfo: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'If the item was inserted before resolving was done' };\n\t\t\tresolveDuration: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'How long resolving took to finish' };\n\t\t\tcommandDuration: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'How long a completion item command took' };\n\t\t\tadditionalEditsAsync: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Info about asynchronously applying additional edits' };\n\t\t\tindex: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The index of the completion item in the sorted list.' };\n\t\t\tfirstIndex: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'When there are multiple completions, the index of the first instance.' };\n\t\t};\n\n\t\tthis._telemetryService.publicLog2<AcceptedSuggestion, AcceptedSuggestionClassification>('suggest.acceptedSuggestion', {\n\t\t\textensionId: item.extensionId?.value ?? 'unknown',\n\t\t\tproviderId: item.provider._debugDisplayName ?? 'unknown',\n\t\t\tkind: item.completion.kind,\n\t\t\tbasenameHash: hash(basename(model.uri)).toString(16),\n\t\t\tlanguageId: model.getLanguageId(),\n\t\t\tfileExtension: extname(model.uri),\n\t\t\tresolveInfo: !item.provider.resolveCompletionItem ? -1 : itemResolved ? 1 : 0,\n\t\t\tresolveDuration: item.resolveDuration,\n\t\t\tcommandDuration: commandExectionDuration,\n\t\t\tadditionalEditsAsync: additionalEditsAppliedAsync,\n\t\t\tindex,\n\t\t\tfirstIndex,\n\t\t});\n\t}\n\n\tgetOverwriteInfo(item: CompletionItem, toggleMode: boolean): { overwriteBefore: number; overwriteAfter: number } {\n\t\tassertType(this.editor.hasModel());\n\n\t\tlet replace = this.editor.getOption(EditorOption.suggest).insertMode === 'replace';\n\t\tif (toggleMode) {\n\t\t\treplace = !replace;\n\t\t}\n\t\tconst overwriteBefore = item.position.column - item.editStart.column;\n\t\tconst overwriteAfter = (replace ? item.editReplaceEnd.column : item.editInsertEnd.column) - item.position.column;\n\t\tconst columnDelta = this.editor.getPosition().column - item.position.column;\n\t\tconst suffixDelta = this._lineSuffix.value ? this._lineSuffix.value.delta(this.editor.getPosition()) : 0;\n\n\t\treturn {\n\t\t\toverwriteBefore: overwriteBefore + columnDelta,\n\t\t\toverwriteAfter: overwriteAfter + suffixDelta\n\t\t};\n\t}\n\n\tprivate _alertCompletionItem(item: CompletionItem): void {\n\t\tif (isNonEmptyArray(item.completion.additionalTextEdits)) {\n\t\t\tconst msg = nls.localize('aria.alert.snippet', \"Accepting '{0}' made {1} additional edits\", item.textLabel, item.completion.additionalTextEdits.length);\n\t\t\talert(msg);\n\t\t}\n\t}\n\n\ttriggerSuggest(onlyFrom?: Set<CompletionItemProvider>, auto?: boolean, noFilter?: boolean): void {\n\t\tif (this.editor.hasModel()) {\n\t\t\tthis.model.trigger({\n\t\t\t\tauto: auto ?? false,\n\t\t\t\tcompletionOptions: { providerFilter: onlyFrom, kindFilter: noFilter ? new Set() : undefined }\n\t\t\t});\n\t\t\tthis.editor.revealPosition(this.editor.getPosition(), ScrollType.Smooth);\n\t\t\tthis.editor.focus();\n\t\t}\n\t}\n\n\ttriggerSuggestAndAcceptBest(arg: { fallback: string }): void {\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\n\t\t}\n\t\tconst positionNow = this.editor.getPosition();\n\n\t\tconst fallback = () => {\n\t\t\tif (positionNow.equals(this.editor.getPosition()!)) {\n\t\t\t\tthis._commandService.executeCommand(arg.fallback);\n\t\t\t}\n\t\t};\n\n\t\tconst makesTextEdit = (item: CompletionItem): boolean => {\n\t\t\tif (item.completion.insertTextRules! & CompletionItemInsertTextRule.InsertAsSnippet || item.completion.additionalTextEdits) {\n\t\t\t\t// snippet, other editor -> makes edit\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst position = this.editor.getPosition()!;\n\t\t\tconst startColumn = item.editStart.column;\n\t\t\tconst endColumn = position.column;\n\t\t\tif (endColumn - startColumn !== item.completion.insertText.length) {\n\t\t\t\t// unequal lengths -> makes edit\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst textNow = this.editor.getModel()!.getValueInRange({\n\t\t\t\tstartLineNumber: position.lineNumber,\n\t\t\t\tstartColumn,\n\t\t\t\tendLineNumber: position.lineNumber,\n\t\t\t\tendColumn\n\t\t\t});\n\t\t\t// unequal text -> makes edit\n\t\t\treturn textNow !== item.completion.insertText;\n\t\t};\n\n\t\tEvent.once(this.model.onDidTrigger)(_ => {\n\t\t\t// wait for trigger because only then the cancel-event is trustworthy\n\t\t\tconst listener: IDisposable[] = [];\n\n\t\t\tEvent.any<unknown>(this.model.onDidTrigger, this.model.onDidCancel)(() => {\n\t\t\t\t// retrigger or cancel -> try to type default text\n\t\t\t\tdispose(listener);\n\t\t\t\tfallback();\n\t\t\t}, undefined, listener);\n\n\t\t\tthis.model.onDidSuggest(({ completionModel }) => {\n\t\t\t\tdispose(listener);\n\t\t\t\tif (completionModel.items.length === 0) {\n\t\t\t\t\tfallback();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst index = this._memoryService.select(this.editor.getModel()!, this.editor.getPosition()!, completionModel.items);\n\t\t\t\tconst item = completionModel.items[index];\n\t\t\t\tif (!makesTextEdit(item)) {\n\t\t\t\t\tfallback();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\tthis._insertSuggestion({ index, item, model: completionModel }, InsertFlags.KeepAlternativeSuggestions | InsertFlags.NoBeforeUndoStop | InsertFlags.NoAfterUndoStop);\n\n\t\t\t}, undefined, listener);\n\t\t});\n\n\t\tthis.model.trigger({ auto: false, shy: true });\n\t\tthis.editor.revealPosition(positionNow, ScrollType.Smooth);\n\t\tthis.editor.focus();\n\t}\n\n\tacceptSelectedSuggestion(keepAlternativeSuggestions: boolean, alternativeOverwriteConfig: boolean): void {\n\t\tconst item = this.widget.value.getFocusedItem();\n\t\tlet flags = 0;\n\t\tif (keepAlternativeSuggestions) {\n\t\t\tflags |= InsertFlags.KeepAlternativeSuggestions;\n\t\t}\n\t\tif (alternativeOverwriteConfig) {\n\t\t\tflags |= InsertFlags.AlternativeOverwriteConfig;\n\t\t}\n\t\tthis._insertSuggestion(item, flags);\n\t}\n\n\tacceptNextSuggestion() {\n\t\tthis._alternatives.value.next();\n\t}\n\n\tacceptPrevSuggestion() {\n\t\tthis._alternatives.value.prev();\n\t}\n\n\tcancelSuggestWidget(): void {\n\t\tthis.model.cancel();\n\t\tthis.model.clear();\n\t\tthis.widget.value.hideWidget();\n\t}\n\n\tfocusSuggestion(): void {\n\t\tthis.widget.value.focusSelected();\n\t}\n\n\tselectNextSuggestion(): void {\n\t\tthis.widget.value.selectNext();\n\t}\n\n\tselectNextPageSuggestion(): void {\n\t\tthis.widget.value.selectNextPage();\n\t}\n\n\tselectLastSuggestion(): void {\n\t\tthis.widget.value.selectLast();\n\t}\n\n\tselectPrevSuggestion(): void {\n\t\tthis.widget.value.selectPrevious();\n\t}\n\n\tselectPrevPageSuggestion(): void {\n\t\tthis.widget.value.selectPreviousPage();\n\t}\n\n\tselectFirstSuggestion(): void {\n\t\tthis.widget.value.selectFirst();\n\t}\n\n\ttoggleSuggestionDetails(): void {\n\t\tthis.widget.value.toggleDetails();\n\t}\n\n\ttoggleExplainMode(): void {\n\t\tthis.widget.value.toggleExplainMode();\n\t}\n\n\ttoggleSuggestionFocus(): void {\n\t\tthis.widget.value.toggleDetailsFocus();\n\t}\n\n\tresetWidgetSize(): void {\n\t\tthis.widget.value.resetPersistedSize();\n\t}\n\n\tforceRenderingAbove() {\n\t\tif (this.widget.isInitialized) {\n\t\t\tthis.widget.value.forceRenderingAbove();\n\t\t} else {\n\t\t\t// Defer this until the widget is created\n\t\t\tthis._wantsForceRenderingAbove = true;\n\t\t}\n\t}\n\n\tstopForceRenderingAbove() {\n\t\tif (this.widget.isInitialized) {\n\t\t\tthis.widget.value.stopForceRenderingAbove();\n\t\t} else {\n\t\t\tthis._wantsForceRenderingAbove = false;\n\t\t}\n\t}\n\n\tregisterSelector(selector: ISuggestItemPreselector): IDisposable {\n\t\treturn this._selectors.register(selector);\n\t}\n}\n\nclass PriorityRegistry<T> {\n\tprivate readonly _items = new Array<T>();\n\n\tconstructor(private readonly prioritySelector: (item: T) => number) { }\n\n\tregister(value: T): IDisposable {\n\t\tif (this._items.indexOf(value) !== -1) {\n\t\t\tthrow new Error('Value is already registered');\n\t\t}\n\t\tthis._items.push(value);\n\t\tthis._items.sort((s1, s2) => this.prioritySelector(s2) - this.prioritySelector(s1));\n\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tconst idx = this._items.indexOf(value);\n\t\t\t\tif (idx >= 0) {\n\t\t\t\t\tthis._items.splice(idx, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tget itemsOrderedByPriorityDesc(): readonly T[] {\n\t\treturn this._items;\n\t}\n}\n\nexport class TriggerSuggestAction extends EditorAction {\n\n\tstatic readonly id = 'editor.action.triggerSuggest';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: TriggerSuggestAction.id,\n\t\t\tlabel: nls.localize2('suggest.trigger.label', \"Trigger Suggest\"),\n\t\t\tprecondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider, SuggestContext.Visible.toNegated()),\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Space,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.KeyI],\n\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.Space, secondary: [KeyMod.Alt | KeyCode.Escape, KeyMod.CtrlCmd | KeyCode.KeyI] },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\trun(_accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\tconst controller = SuggestController.get(editor);\n\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype TriggerArgs = { auto: boolean };\n\t\tlet auto: boolean | undefined;\n\t\tif (args && typeof args === 'object') {\n\t\t\tif ((<TriggerArgs>args).auto === true) {\n\t\t\t\tauto = true;\n\t\t\t}\n\t\t}\n\n\t\tcontroller.triggerSuggest(undefined, auto, undefined);\n\t}\n}\n\nregisterEditorContribution(SuggestController.ID, SuggestController, EditorContributionInstantiation.BeforeFirstInteraction);\nregisterEditorAction(TriggerSuggestAction);\n\nconst weight = KeybindingWeight.EditorContrib + 90;\n\nconst SuggestCommand = EditorCommand.bindToContribution<SuggestController>(SuggestController.get);\n\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'acceptSelectedSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n\thandler(x) {\n\t\tx.acceptSelectedSuggestion(true, false);\n\t},\n\tkbOpts: [{\n\t\t// normal tab\n\t\tprimary: KeyCode.Tab,\n\t\tkbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\n\t\tweight,\n\t}, {\n\t\t// accept on enter has special rules\n\t\tprimary: KeyCode.Enter,\n\t\tkbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.AcceptSuggestionsOnEnter, SuggestContext.MakesTextEdit),\n\t\tweight,\n\t}],\n\tmenuOpts: [{\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\ttitle: nls.localize('accept.insert', \"Insert\"),\n\t\tgroup: 'left',\n\t\torder: 1,\n\t\twhen: SuggestContext.HasInsertAndReplaceRange.toNegated()\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\ttitle: nls.localize('accept.insert', \"Insert\"),\n\t\tgroup: 'left',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\ttitle: nls.localize('accept.replace', \"Replace\"),\n\t\tgroup: 'left',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))\n\t}]\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'acceptAlternativeSelectedSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.HasFocusedSuggestion),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.Shift | KeyCode.Enter,\n\t\tsecondary: [KeyMod.Shift | KeyCode.Tab],\n\t},\n\thandler(x) {\n\t\tx.acceptSelectedSuggestion(false, true);\n\t},\n\tmenuOpts: [{\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'left',\n\t\torder: 2,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),\n\t\ttitle: nls.localize('accept.replace', \"Replace\")\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'left',\n\t\torder: 2,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),\n\t\ttitle: nls.localize('accept.insert', \"Insert\")\n\t}]\n}));\n\n\n// continue to support the old command\nCommandsRegistry.registerCommandAlias('acceptSelectedSuggestionOnEnter', 'acceptSelectedSuggestion');\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'hideSuggestWidget',\n\tprecondition: SuggestContext.Visible,\n\thandler: x => x.cancelSuggestWidget(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.Escape,\n\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectNextSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectNextSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.DownArrow,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.DownArrow],\n\t\tmac: { primary: KeyCode.DownArrow, secondary: [KeyMod.CtrlCmd | KeyCode.DownArrow, KeyMod.WinCtrl | KeyCode.KeyN] }\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectNextPageSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectNextPageSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.PageDown,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.PageDown]\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectLastSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectLastSuggestion()\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectPrevSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectPrevSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.UpArrow,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.UpArrow],\n\t\tmac: { primary: KeyCode.UpArrow, secondary: [KeyMod.CtrlCmd | KeyCode.UpArrow, KeyMod.WinCtrl | KeyCode.KeyP] }\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectPrevPageSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectPrevPageSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.PageUp,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.PageUp]\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectFirstSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectFirstSuggestion()\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'focusSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion.negate()),\n\thandler: x => x.focusSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.Space,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.KeyI],\n\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.Space, secondary: [KeyMod.CtrlCmd | KeyCode.KeyI] }\n\t},\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'focusAndAcceptSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion.negate()),\n\thandler: c => {\n\t\tc.focusSuggestion();\n\t\tc.acceptSelectedSuggestion(true, false);\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'toggleSuggestionDetails',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n\thandler: x => x.toggleSuggestionDetails(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.Space,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.KeyI],\n\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.Space, secondary: [KeyMod.CtrlCmd | KeyCode.KeyI] }\n\t},\n\tmenuOpts: [{\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'right',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),\n\t\ttitle: nls.localize('detail.more', \"Show Less\")\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'right',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),\n\t\ttitle: nls.localize('detail.less', \"Show More\")\n\t}]\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'toggleExplainMode',\n\tprecondition: SuggestContext.Visible,\n\thandler: x => x.toggleExplainMode(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.Slash,\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'toggleSuggestionFocus',\n\tprecondition: SuggestContext.Visible,\n\thandler: x => x.toggleSuggestionFocus(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Space,\n\t\tmac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.Space }\n\t}\n}));\n\n//#region tab completions\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'insertBestCompletion',\n\tprecondition: ContextKeyExpr.and(\n\t\tEditorContextKeys.textInputFocus,\n\t\tContextKeyExpr.equals('config.editor.tabCompletion', 'on'),\n\t\tWordContextKey.AtEnd,\n\t\tSuggestContext.Visible.toNegated(),\n\t\tSuggestAlternatives.OtherSuggestions.toNegated(),\n\t\tSnippetController2.InSnippetMode.toNegated()\n\t),\n\thandler: (x, arg) => {\n\n\t\tx.triggerSuggestAndAcceptBest(isObject(arg) ? { fallback: 'tab', ...arg } : { fallback: 'tab' });\n\t},\n\tkbOpts: {\n\t\tweight,\n\t\tprimary: KeyCode.Tab\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'insertNextSuggestion',\n\tprecondition: ContextKeyExpr.and(\n\t\tEditorContextKeys.textInputFocus,\n\t\tContextKeyExpr.equals('config.editor.tabCompletion', 'on'),\n\t\tSuggestAlternatives.OtherSuggestions,\n\t\tSuggestContext.Visible.toNegated(),\n\t\tSnippetController2.InSnippetMode.toNegated()\n\t),\n\thandler: x => x.acceptNextSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.Tab\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'insertPrevSuggestion',\n\tprecondition: ContextKeyExpr.and(\n\t\tEditorContextKeys.textInputFocus,\n\t\tContextKeyExpr.equals('config.editor.tabCompletion', 'on'),\n\t\tSuggestAlternatives.OtherSuggestions,\n\t\tSuggestContext.Visible.toNegated(),\n\t\tSnippetController2.InSnippetMode.toNegated()\n\t),\n\thandler: x => x.acceptPrevSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.Shift | KeyCode.Tab\n\t}\n}));\n\n\nregisterEditorAction(class extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.resetSuggestSize',\n\t\t\tlabel: nls.localize2('suggest.reset.label', \"Reset Suggest Widget Size\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\trun(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tSuggestController.get(editor)?.resetWidgetSize();\n\t}\n});\n"]}
1
+ {"version":3,"sources":["vs/editor/contrib/suggest/browser/suggestController.ts"],"names":[],"mappings":"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","file":"suggestController.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 { alert } from '../../../../base/browser/ui/aria/aria.js';\nimport { isNonEmptyArray } from '../../../../base/common/arrays.js';\nimport { CancellationTokenSource } from '../../../../base/common/cancellation.js';\nimport { onUnexpectedError, onUnexpectedExternalError } from '../../../../base/common/errors.js';\nimport { Emitter, Event } from '../../../../base/common/event.js';\nimport { KeyCode, KeyMod } from '../../../../base/common/keyCodes.js';\nimport { DisposableStore, dispose, IDisposable, MutableDisposable, toDisposable } from '../../../../base/common/lifecycle.js';\nimport { StopWatch } from '../../../../base/common/stopwatch.js';\nimport { assertType, isObject } from '../../../../base/common/types.js';\nimport { StableEditorScrollState } from '../../../browser/stableEditorScroll.js';\nimport { ICodeEditor } from '../../../browser/editorBrowser.js';\nimport { EditorAction, EditorCommand, EditorContributionInstantiation, registerEditorAction, registerEditorCommand, registerEditorContribution, ServicesAccessor } from '../../../browser/editorExtensions.js';\nimport { EditorOption } from '../../../common/config/editorOptions.js';\nimport { EditOperation } from '../../../common/core/editOperation.js';\nimport { IPosition, Position } from '../../../common/core/position.js';\nimport { Range } from '../../../common/core/range.js';\nimport { IEditorContribution, ScrollType } from '../../../common/editorCommon.js';\nimport { EditorContextKeys } from '../../../common/editorContextKeys.js';\nimport { ITextModel, TrackedRangeStickiness } from '../../../common/model.js';\nimport { CompletionItemInsertTextRule, CompletionItemProvider, CompletionTriggerKind, ProviderId } from '../../../common/languages.js';\nimport { SnippetController2 } from '../../snippet/browser/snippetController2.js';\nimport { SnippetParser } from '../../snippet/browser/snippetParser.js';\nimport { ISuggestMemoryService } from './suggestMemory.js';\nimport { WordContextKey } from './wordContextKey.js';\nimport * as nls from '../../../../nls.js';\nimport { CommandsRegistry, ICommandService } from '../../../../platform/commands/common/commands.js';\nimport { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';\nimport { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';\nimport { KeybindingWeight } from '../../../../platform/keybinding/common/keybindingsRegistry.js';\nimport { ILogService } from '../../../../platform/log/common/log.js';\nimport { CompletionItem, Context as SuggestContext, ISuggestItemPreselector, suggestWidgetStatusbarMenu } from './suggest.js';\nimport { SuggestAlternatives } from './suggestAlternatives.js';\nimport { CommitCharacterController } from './suggestCommitCharacters.js';\nimport { State, SuggestModel } from './suggestModel.js';\nimport { OvertypingCapturer } from './suggestOvertypingCapturer.js';\nimport { ISelectedSuggestion, SuggestWidget } from './suggestWidget.js';\nimport { ITelemetryService } from '../../../../platform/telemetry/common/telemetry.js';\nimport { basename, extname } from '../../../../base/common/resources.js';\nimport { hash } from '../../../../base/common/hash.js';\nimport { WindowIdleValue, getWindow } from '../../../../base/browser/dom.js';\nimport { ModelDecorationOptions } from '../../../common/model/textModel.js';\nimport { EditSources } from '../../../common/textModelEditSource.js';\n\n// sticky suggest widget which doesn't disappear on focus out and such\nconst _sticky = false\n\t// || Boolean(\"true\") // done \"weirdly\" so that a lint warning prevents you from pushing this\n\t;\n\nclass LineSuffix {\n\n\tprivate readonly _decorationOptions = ModelDecorationOptions.register({\n\t\tdescription: 'suggest-line-suffix',\n\t\tstickiness: TrackedRangeStickiness.NeverGrowsWhenTypingAtEdges\n\t});\n\n\tprivate _marker: string | undefined;\n\n\tconstructor(private readonly _model: ITextModel, private readonly _position: IPosition) {\n\t\t// spy on what's happening right of the cursor. two cases:\n\t\t// 1. end of line -> check that it's still end of line\n\t\t// 2. mid of line -> add a marker and compute the delta\n\t\tconst maxColumn = _model.getLineMaxColumn(_position.lineNumber);\n\t\tif (maxColumn !== _position.column) {\n\t\t\tconst offset = _model.getOffsetAt(_position);\n\t\t\tconst end = _model.getPositionAt(offset + 1);\n\t\t\t_model.changeDecorations(accessor => {\n\t\t\t\tif (this._marker) {\n\t\t\t\t\taccessor.removeDecoration(this._marker);\n\t\t\t\t}\n\t\t\t\tthis._marker = accessor.addDecoration(Range.fromPositions(_position, end), this._decorationOptions);\n\t\t\t});\n\t\t}\n\t}\n\n\tdispose(): void {\n\t\tif (this._marker && !this._model.isDisposed()) {\n\t\t\tthis._model.changeDecorations(accessor => {\n\t\t\t\taccessor.removeDecoration(this._marker!);\n\t\t\t\tthis._marker = undefined;\n\t\t\t});\n\t\t}\n\t}\n\n\tdelta(position: IPosition): number {\n\t\tif (this._model.isDisposed() || this._position.lineNumber !== position.lineNumber) {\n\t\t\t// bail out early if things seems fishy\n\t\t\treturn 0;\n\t\t}\n\t\t// read the marker (in case suggest was triggered at line end) or compare\n\t\t// the cursor to the line end.\n\t\tif (this._marker) {\n\t\t\tconst range = this._model.getDecorationRange(this._marker);\n\t\t\tconst end = this._model.getOffsetAt(range!.getStartPosition());\n\t\t\treturn end - this._model.getOffsetAt(position);\n\t\t} else {\n\t\t\treturn this._model.getLineMaxColumn(position.lineNumber) - position.column;\n\t\t}\n\t}\n}\n\nconst enum InsertFlags {\n\tNone = 0,\n\tNoBeforeUndoStop = 1,\n\tNoAfterUndoStop = 2,\n\tKeepAlternativeSuggestions = 4,\n\tAlternativeOverwriteConfig = 8\n}\n\nexport class SuggestController implements IEditorContribution {\n\n\tpublic static readonly ID: string = 'editor.contrib.suggestController';\n\n\tpublic static get(editor: ICodeEditor): SuggestController | null {\n\t\treturn editor.getContribution<SuggestController>(SuggestController.ID);\n\t}\n\n\treadonly editor: ICodeEditor;\n\treadonly model: SuggestModel;\n\treadonly widget: WindowIdleValue<SuggestWidget>;\n\n\tprivate readonly _alternatives: WindowIdleValue<SuggestAlternatives>;\n\tprivate readonly _lineSuffix = new MutableDisposable<LineSuffix>();\n\tprivate readonly _toDispose = new DisposableStore();\n\tprivate readonly _overtypingCapturer: WindowIdleValue<OvertypingCapturer>;\n\tprivate readonly _selectors = new PriorityRegistry<ISuggestItemPreselector>(s => s.priority);\n\n\tprivate readonly _onWillInsertSuggestItem = new Emitter<{ item: CompletionItem }>();\n\tget onWillInsertSuggestItem() { return this._onWillInsertSuggestItem.event; }\n\n\tprivate _wantsForceRenderingAbove = false;\n\n\n\tconstructor(\n\t\teditor: ICodeEditor,\n\t\t@ISuggestMemoryService private readonly _memoryService: ISuggestMemoryService,\n\t\t@ICommandService private readonly _commandService: ICommandService,\n\t\t@IContextKeyService private readonly _contextKeyService: IContextKeyService,\n\t\t@IInstantiationService private readonly _instantiationService: IInstantiationService,\n\t\t@ILogService private readonly _logService: ILogService,\n\t\t@ITelemetryService private readonly _telemetryService: ITelemetryService,\n\t) {\n\t\tthis.editor = editor;\n\t\tthis.model = _instantiationService.createInstance(SuggestModel, this.editor,);\n\n\t\t// default selector\n\t\tthis._selectors.register({\n\t\t\tpriority: 0,\n\t\t\tselect: (model, pos, items) => this._memoryService.select(model, pos, items)\n\t\t});\n\n\t\t// context key: update insert/replace mode\n\t\tconst ctxInsertMode = SuggestContext.InsertMode.bindTo(_contextKeyService);\n\t\tctxInsertMode.set(editor.getOption(EditorOption.suggest).insertMode);\n\t\tthis._toDispose.add(this.model.onDidTrigger(() => ctxInsertMode.set(editor.getOption(EditorOption.suggest).insertMode)));\n\n\t\tthis.widget = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n\n\t\t\tconst widget = this._instantiationService.createInstance(SuggestWidget, this.editor);\n\n\t\t\tthis._toDispose.add(widget);\n\t\t\tthis._toDispose.add(widget.onDidSelect(item => this._insertSuggestion(item, InsertFlags.None), this));\n\n\t\t\t// Wire up logic to accept a suggestion on certain characters\n\t\t\tconst commitCharacterController = new CommitCharacterController(this.editor, widget, this.model, item => this._insertSuggestion(item, InsertFlags.NoAfterUndoStop));\n\t\t\tthis._toDispose.add(commitCharacterController);\n\n\n\t\t\t// Wire up makes text edit context key\n\t\t\tconst ctxMakesTextEdit = SuggestContext.MakesTextEdit.bindTo(this._contextKeyService);\n\t\t\tconst ctxHasInsertAndReplace = SuggestContext.HasInsertAndReplaceRange.bindTo(this._contextKeyService);\n\t\t\tconst ctxCanResolve = SuggestContext.CanResolve.bindTo(this._contextKeyService);\n\n\t\t\tthis._toDispose.add(toDisposable(() => {\n\t\t\t\tctxMakesTextEdit.reset();\n\t\t\t\tctxHasInsertAndReplace.reset();\n\t\t\t\tctxCanResolve.reset();\n\t\t\t}));\n\n\t\t\tthis._toDispose.add(widget.onDidFocus(({ item }) => {\n\n\t\t\t\t// (ctx: makesTextEdit)\n\t\t\t\tconst position = this.editor.getPosition()!;\n\t\t\t\tconst startColumn = item.editStart.column;\n\t\t\t\tconst endColumn = position.column;\n\t\t\t\tlet value = true;\n\t\t\t\tif (\n\t\t\t\t\tthis.editor.getOption(EditorOption.acceptSuggestionOnEnter) === 'smart'\n\t\t\t\t\t&& this.model.state === State.Auto\n\t\t\t\t\t&& !item.completion.additionalTextEdits\n\t\t\t\t\t&& !(item.completion.insertTextRules! & CompletionItemInsertTextRule.InsertAsSnippet)\n\t\t\t\t\t&& endColumn - startColumn === item.completion.insertText.length\n\t\t\t\t) {\n\t\t\t\t\tconst oldText = this.editor.getModel()!.getValueInRange({\n\t\t\t\t\t\tstartLineNumber: position.lineNumber,\n\t\t\t\t\t\tstartColumn,\n\t\t\t\t\t\tendLineNumber: position.lineNumber,\n\t\t\t\t\t\tendColumn\n\t\t\t\t\t});\n\t\t\t\t\tvalue = oldText !== item.completion.insertText;\n\t\t\t\t}\n\t\t\t\tctxMakesTextEdit.set(value);\n\n\t\t\t\t// (ctx: hasInsertAndReplaceRange)\n\t\t\t\tctxHasInsertAndReplace.set(!Position.equals(item.editInsertEnd, item.editReplaceEnd));\n\n\t\t\t\t// (ctx: canResolve)\n\t\t\t\tctxCanResolve.set(Boolean(item.provider.resolveCompletionItem) || Boolean(item.completion.documentation) || item.completion.detail !== item.completion.label);\n\t\t\t}));\n\n\t\t\tif (this._wantsForceRenderingAbove) {\n\t\t\t\twidget.forceRenderingAbove();\n\t\t\t}\n\n\t\t\treturn widget;\n\t\t}));\n\n\t\t// Wire up text overtyping capture\n\t\tthis._overtypingCapturer = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n\t\t\treturn this._toDispose.add(new OvertypingCapturer(this.editor, this.model));\n\t\t}));\n\n\t\tthis._alternatives = this._toDispose.add(new WindowIdleValue(getWindow(editor.getDomNode()), () => {\n\t\t\treturn this._toDispose.add(new SuggestAlternatives(this.editor, this._contextKeyService));\n\t\t}));\n\n\t\tthis._toDispose.add(_instantiationService.createInstance(WordContextKey, editor));\n\n\t\tthis._toDispose.add(this.model.onDidTrigger(e => {\n\t\t\tthis.widget.value.showTriggered(e.auto, e.shy ? 250 : 50);\n\t\t\tthis._lineSuffix.value = new LineSuffix(this.editor.getModel()!, e.position);\n\t\t}));\n\t\tthis._toDispose.add(this.model.onDidSuggest(e => {\n\t\t\tif (e.triggerOptions.shy) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet index = -1;\n\t\t\tfor (const selector of this._selectors.itemsOrderedByPriorityDesc) {\n\t\t\t\tindex = selector.select(this.editor.getModel()!, this.editor.getPosition()!, e.completionModel.items);\n\t\t\t\tif (index !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (index === -1) {\n\t\t\t\tindex = 0;\n\t\t\t}\n\t\t\tif (this.model.state === State.Idle) {\n\t\t\t\t// selecting an item can \"pump\" out selection/cursor change events\n\t\t\t\t// which can cancel suggest halfway through this function. therefore\n\t\t\t\t// we need to check again and bail if the session has been canceled\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tlet noFocus = false;\n\t\t\tif (e.triggerOptions.auto) {\n\t\t\t\t// don't \"focus\" item when configured to do\n\t\t\t\tconst options = this.editor.getOption(EditorOption.suggest);\n\t\t\t\tif (options.selectionMode === 'never' || options.selectionMode === 'always') {\n\t\t\t\t\t// simple: always or never\n\t\t\t\t\tnoFocus = options.selectionMode === 'never';\n\n\t\t\t\t} else if (options.selectionMode === 'whenTriggerCharacter') {\n\t\t\t\t\t// on with trigger character\n\t\t\t\t\tnoFocus = e.triggerOptions.triggerKind !== CompletionTriggerKind.TriggerCharacter;\n\n\t\t\t\t} else if (options.selectionMode === 'whenQuickSuggestion') {\n\t\t\t\t\t// without trigger character or when refiltering\n\t\t\t\t\tnoFocus = e.triggerOptions.triggerKind === CompletionTriggerKind.TriggerCharacter && !e.triggerOptions.refilter;\n\t\t\t\t}\n\n\t\t\t}\n\t\t\tthis.widget.value.showSuggestions(e.completionModel, index, e.isFrozen, e.triggerOptions.auto, noFocus);\n\t\t}));\n\t\tthis._toDispose.add(this.model.onDidCancel(e => {\n\t\t\tif (!e.retrigger) {\n\t\t\t\tthis.widget.value.hideWidget();\n\t\t\t}\n\t\t}));\n\t\tthis._toDispose.add(this.editor.onDidBlurEditorWidget(() => {\n\t\t\tif (!_sticky) {\n\t\t\t\tthis.model.cancel();\n\t\t\t\tthis.model.clear();\n\t\t\t}\n\t\t}));\n\n\t\t// Manage the acceptSuggestionsOnEnter context key\n\t\tconst acceptSuggestionsOnEnter = SuggestContext.AcceptSuggestionsOnEnter.bindTo(_contextKeyService);\n\t\tconst updateFromConfig = () => {\n\t\t\tconst acceptSuggestionOnEnter = this.editor.getOption(EditorOption.acceptSuggestionOnEnter);\n\t\t\tacceptSuggestionsOnEnter.set(acceptSuggestionOnEnter === 'on' || acceptSuggestionOnEnter === 'smart');\n\t\t};\n\t\tthis._toDispose.add(this.editor.onDidChangeConfiguration(() => updateFromConfig()));\n\t\tupdateFromConfig();\n\t}\n\n\tdispose(): void {\n\t\tthis._alternatives.dispose();\n\t\tthis._toDispose.dispose();\n\t\tthis.widget.dispose();\n\t\tthis.model.dispose();\n\t\tthis._lineSuffix.dispose();\n\t\tthis._onWillInsertSuggestItem.dispose();\n\t}\n\n\tprotected _insertSuggestion(\n\t\tevent: ISelectedSuggestion | undefined,\n\t\tflags: InsertFlags\n\t): void {\n\t\tif (!event || !event.item) {\n\t\t\tthis._alternatives.value.reset();\n\t\t\tthis.model.cancel();\n\t\t\tthis.model.clear();\n\t\t\treturn;\n\t\t}\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\t\t}\n\t\tconst snippetController = SnippetController2.get(this.editor);\n\t\tif (!snippetController) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis._onWillInsertSuggestItem.fire({ item: event.item });\n\n\t\tconst model = this.editor.getModel();\n\t\tconst modelVersionNow = model.getAlternativeVersionId();\n\t\tconst { item } = event;\n\n\t\t//\n\t\tconst tasks: Promise<unknown>[] = [];\n\t\tconst cts = new CancellationTokenSource();\n\n\t\t// pushing undo stops *before* additional text edits and\n\t\t// *after* the main edit\n\t\tif (!(flags & InsertFlags.NoBeforeUndoStop)) {\n\t\t\tthis.editor.pushUndoStop();\n\t\t}\n\n\t\t// compute overwrite[Before|After] deltas BEFORE applying extra edits\n\t\tconst info = this.getOverwriteInfo(item, Boolean(flags & InsertFlags.AlternativeOverwriteConfig));\n\n\t\t// keep item in memory\n\t\tthis._memoryService.memorize(model, this.editor.getPosition(), item);\n\n\t\tconst isResolved = item.isResolved;\n\n\t\t// telemetry data points: duration of command execution, info about async additional edits (-1=n/a, -2=none, 1=success, 0=failed)\n\t\tlet _commandExectionDuration = -1;\n\t\tlet _additionalEditsAppliedAsync = -1;\n\n\t\tif (Array.isArray(item.completion.additionalTextEdits)) {\n\n\t\t\t// cancel -> stops all listening and closes widget\n\t\t\tthis.model.cancel();\n\n\t\t\t// sync additional edits\n\t\t\tconst scrollState = StableEditorScrollState.capture(this.editor);\n\t\t\tthis.editor.executeEdits(\n\t\t\t\t'suggestController.additionalTextEdits.sync',\n\t\t\t\titem.completion.additionalTextEdits.map(edit => {\n\t\t\t\t\tlet range = Range.lift(edit.range);\n\t\t\t\t\tif (range.startLineNumber === item.position.lineNumber && range.startColumn > item.position.column) {\n\t\t\t\t\t\t// shift additional edit when it is \"after\" the completion insertion position\n\t\t\t\t\t\tconst columnDelta = this.editor.getPosition()!.column - item.position.column;\n\t\t\t\t\t\tconst startColumnDelta = columnDelta;\n\t\t\t\t\t\tconst endColumnDelta = Range.spansMultipleLines(range) ? 0 : columnDelta;\n\t\t\t\t\t\trange = new Range(range.startLineNumber, range.startColumn + startColumnDelta, range.endLineNumber, range.endColumn + endColumnDelta);\n\t\t\t\t\t}\n\t\t\t\t\treturn EditOperation.replaceMove(range, edit.text);\n\t\t\t\t})\n\t\t\t);\n\t\t\tscrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n\n\t\t} else if (!isResolved) {\n\t\t\t// async additional edits\n\t\t\tconst sw = new StopWatch();\n\t\t\tlet position: IPosition | undefined;\n\n\t\t\tconst docListener = model.onDidChangeContent(e => {\n\t\t\t\tif (e.isFlush) {\n\t\t\t\t\tcts.cancel();\n\t\t\t\t\tdocListener.dispose();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tfor (const change of e.changes) {\n\t\t\t\t\tconst thisPosition = Range.getEndPosition(change.range);\n\t\t\t\t\tif (!position || Position.isBefore(thisPosition, position)) {\n\t\t\t\t\t\tposition = thisPosition;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tconst oldFlags = flags;\n\t\t\tflags |= InsertFlags.NoAfterUndoStop;\n\t\t\tlet didType = false;\n\t\t\tconst typeListener = this.editor.onWillType(() => {\n\t\t\t\ttypeListener.dispose();\n\t\t\t\tdidType = true;\n\t\t\t\tif (!(oldFlags & InsertFlags.NoAfterUndoStop)) {\n\t\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\ttasks.push(item.resolve(cts.token).then(() => {\n\t\t\t\tif (!item.completion.additionalTextEdits || cts.token.isCancellationRequested) {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tif (position && item.completion.additionalTextEdits.some(edit => Position.isBefore(position!, Range.getStartPosition(edit.range)))) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\tif (didType) {\n\t\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\t}\n\t\t\t\tconst scrollState = StableEditorScrollState.capture(this.editor);\n\t\t\t\tthis.editor.executeEdits(\n\t\t\t\t\t'suggestController.additionalTextEdits.async',\n\t\t\t\t\titem.completion.additionalTextEdits.map(edit => EditOperation.replaceMove(Range.lift(edit.range), edit.text))\n\t\t\t\t);\n\t\t\t\tscrollState.restoreRelativeVerticalPositionOfCursor(this.editor);\n\t\t\t\tif (didType || !(oldFlags & InsertFlags.NoAfterUndoStop)) {\n\t\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\t}\n\t\t\t\treturn true;\n\t\t\t}).then(applied => {\n\t\t\t\tthis._logService.trace('[suggest] async resolving of edits DONE (ms, applied?)', sw.elapsed(), applied);\n\t\t\t\t_additionalEditsAppliedAsync = applied === true ? 1 : applied === false ? 0 : -2;\n\t\t\t}).finally(() => {\n\t\t\t\tdocListener.dispose();\n\t\t\t\ttypeListener.dispose();\n\t\t\t}));\n\t\t}\n\n\t\tlet { insertText } = item.completion;\n\t\tif (!(item.completion.insertTextRules! & CompletionItemInsertTextRule.InsertAsSnippet)) {\n\t\t\tinsertText = SnippetParser.escape(insertText);\n\t\t}\n\n\t\t// cancel -> stops all listening and closes widget\n\t\tthis.model.cancel();\n\n\t\tsnippetController.insert(insertText, {\n\t\t\toverwriteBefore: info.overwriteBefore,\n\t\t\toverwriteAfter: info.overwriteAfter,\n\t\t\tundoStopBefore: false,\n\t\t\tundoStopAfter: false,\n\t\t\tadjustWhitespace: !(item.completion.insertTextRules! & CompletionItemInsertTextRule.KeepWhitespace),\n\t\t\tclipboardText: event.model.clipboardText,\n\t\t\tovertypingCapturer: this._overtypingCapturer.value,\n\t\t\treason: EditSources.suggest({ providerId: ProviderId.fromExtensionId(item.extensionId?.value) }),\n\t\t});\n\n\t\tif (!(flags & InsertFlags.NoAfterUndoStop)) {\n\t\t\tthis.editor.pushUndoStop();\n\t\t}\n\n\t\tif (item.completion.command) {\n\t\t\tif (item.completion.command.id === TriggerSuggestAction.id) {\n\t\t\t\t// retigger\n\t\t\t\tthis.model.trigger({ auto: true, retrigger: true });\n\t\t\t} else {\n\t\t\t\t// exec command, done\n\t\t\t\tconst sw = new StopWatch();\n\t\t\t\ttasks.push(this._commandService.executeCommand(item.completion.command.id, ...(item.completion.command.arguments ? [...item.completion.command.arguments] : [])).catch(e => {\n\t\t\t\t\tif (item.completion.extensionId) {\n\t\t\t\t\t\tonUnexpectedExternalError(e);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tonUnexpectedError(e);\n\t\t\t\t\t}\n\t\t\t\t}).finally(() => {\n\t\t\t\t\t_commandExectionDuration = sw.elapsed();\n\t\t\t\t}));\n\t\t\t}\n\t\t}\n\n\t\tif (flags & InsertFlags.KeepAlternativeSuggestions) {\n\t\t\tthis._alternatives.value.set(event, next => {\n\n\t\t\t\t// cancel resolving of additional edits\n\t\t\t\tcts.cancel();\n\n\t\t\t\t// this is not so pretty. when inserting the 'next'\n\t\t\t\t// suggestion we undo until we are at the state at\n\t\t\t\t// which we were before inserting the previous suggestion...\n\t\t\t\twhile (model.canUndo()) {\n\t\t\t\t\tif (modelVersionNow !== model.getAlternativeVersionId()) {\n\t\t\t\t\t\tmodel.undo();\n\t\t\t\t\t}\n\t\t\t\t\tthis._insertSuggestion(\n\t\t\t\t\t\tnext,\n\t\t\t\t\t\tInsertFlags.NoBeforeUndoStop | InsertFlags.NoAfterUndoStop | (flags & InsertFlags.AlternativeOverwriteConfig ? InsertFlags.AlternativeOverwriteConfig : 0)\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tthis._alertCompletionItem(item);\n\n\t\t// clear only now - after all tasks are done\n\t\tPromise.all(tasks).finally(() => {\n\t\t\tthis._reportSuggestionAcceptedTelemetry(item, model, isResolved, _commandExectionDuration, _additionalEditsAppliedAsync, event.index, event.model.items);\n\n\t\t\tthis.model.clear();\n\t\t\tcts.dispose();\n\t\t});\n\t}\n\n\tprivate _reportSuggestionAcceptedTelemetry(item: CompletionItem, model: ITextModel, itemResolved: boolean, commandExectionDuration: number, additionalEditsAppliedAsync: number, index: number, completionItems: CompletionItem[]): void {\n\t\tif (Math.random() > 0.0001) { // 0.01%\n\t\t\treturn;\n\t\t}\n\n\t\tconst labelMap = new Map<string, number[]>();\n\n\t\tfor (let i = 0; i < Math.min(30, completionItems.length); i++) {\n\t\t\tconst label = completionItems[i].textLabel;\n\n\t\t\tif (labelMap.has(label)) {\n\t\t\t\tlabelMap.get(label)!.push(i);\n\t\t\t} else {\n\t\t\t\tlabelMap.set(label, [i]);\n\t\t\t}\n\t\t}\n\n\t\tconst firstIndexArray = labelMap.get(item.textLabel);\n\t\tconst hasDuplicates = firstIndexArray && firstIndexArray.length > 1;\n\t\tconst firstIndex = hasDuplicates ? firstIndexArray[0] : -1;\n\n\t\ttype AcceptedSuggestion = {\n\t\t\textensionId: string; providerId: string;\n\t\t\tfileExtension: string; languageId: string; basenameHash: string; kind: number;\n\t\t\tresolveInfo: number; resolveDuration: number;\n\t\t\tcommandDuration: number;\n\t\t\tadditionalEditsAsync: number;\n\t\t\tindex: number; firstIndex: number;\n\t\t};\n\t\ttype AcceptedSuggestionClassification = {\n\t\t\towner: 'jrieken';\n\t\t\tcomment: 'Information accepting completion items';\n\t\t\textensionId: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'Extension contributing the completions item' };\n\t\t\tproviderId: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'Provider of the completions item' };\n\t\t\tbasenameHash: { classification: 'PublicNonPersonalData'; purpose: 'FeatureInsight'; comment: 'Hash of the basename of the file into which the completion was inserted' };\n\t\t\tfileExtension: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'File extension of the file into which the completion was inserted' };\n\t\t\tlanguageId: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Language type of the file into which the completion was inserted' };\n\t\t\tkind: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The completion item kind' };\n\t\t\tresolveInfo: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'If the item was inserted before resolving was done' };\n\t\t\tresolveDuration: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'How long resolving took to finish' };\n\t\t\tcommandDuration: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'How long a completion item command took' };\n\t\t\tadditionalEditsAsync: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'Info about asynchronously applying additional edits' };\n\t\t\tindex: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'The index of the completion item in the sorted list.' };\n\t\t\tfirstIndex: { classification: 'SystemMetaData'; purpose: 'FeatureInsight'; comment: 'When there are multiple completions, the index of the first instance.' };\n\t\t};\n\n\t\tthis._telemetryService.publicLog2<AcceptedSuggestion, AcceptedSuggestionClassification>('suggest.acceptedSuggestion', {\n\t\t\textensionId: item.extensionId?.value ?? 'unknown',\n\t\t\tproviderId: item.provider._debugDisplayName ?? 'unknown',\n\t\t\tkind: item.completion.kind,\n\t\t\tbasenameHash: hash(basename(model.uri)).toString(16),\n\t\t\tlanguageId: model.getLanguageId(),\n\t\t\tfileExtension: extname(model.uri),\n\t\t\tresolveInfo: !item.provider.resolveCompletionItem ? -1 : itemResolved ? 1 : 0,\n\t\t\tresolveDuration: item.resolveDuration,\n\t\t\tcommandDuration: commandExectionDuration,\n\t\t\tadditionalEditsAsync: additionalEditsAppliedAsync,\n\t\t\tindex,\n\t\t\tfirstIndex,\n\t\t});\n\t}\n\n\tgetOverwriteInfo(item: CompletionItem, toggleMode: boolean): { overwriteBefore: number; overwriteAfter: number } {\n\t\tassertType(this.editor.hasModel());\n\n\t\tlet replace = this.editor.getOption(EditorOption.suggest).insertMode === 'replace';\n\t\tif (toggleMode) {\n\t\t\treplace = !replace;\n\t\t}\n\t\tconst overwriteBefore = item.position.column - item.editStart.column;\n\t\tconst overwriteAfter = (replace ? item.editReplaceEnd.column : item.editInsertEnd.column) - item.position.column;\n\t\tconst columnDelta = this.editor.getPosition().column - item.position.column;\n\t\tconst suffixDelta = this._lineSuffix.value ? this._lineSuffix.value.delta(this.editor.getPosition()) : 0;\n\n\t\treturn {\n\t\t\toverwriteBefore: overwriteBefore + columnDelta,\n\t\t\toverwriteAfter: overwriteAfter + suffixDelta\n\t\t};\n\t}\n\n\tprivate _alertCompletionItem(item: CompletionItem): void {\n\t\tif (isNonEmptyArray(item.completion.additionalTextEdits)) {\n\t\t\tconst msg = nls.localize('aria.alert.snippet', \"Accepting '{0}' made {1} additional edits\", item.textLabel, item.completion.additionalTextEdits.length);\n\t\t\talert(msg);\n\t\t}\n\t}\n\n\ttriggerSuggest(onlyFrom?: Set<CompletionItemProvider>, auto?: boolean, noFilter?: boolean): void {\n\t\tif (this.editor.hasModel()) {\n\t\t\tthis.model.trigger({\n\t\t\t\tauto: auto ?? false,\n\t\t\t\tcompletionOptions: { providerFilter: onlyFrom, kindFilter: noFilter ? new Set() : undefined }\n\t\t\t});\n\t\t\tthis.editor.revealPosition(this.editor.getPosition(), ScrollType.Smooth);\n\t\t\tthis.editor.focus();\n\t\t}\n\t}\n\n\ttriggerSuggestAndAcceptBest(arg: { fallback: string }): void {\n\t\tif (!this.editor.hasModel()) {\n\t\t\treturn;\n\n\t\t}\n\t\tconst positionNow = this.editor.getPosition();\n\n\t\tconst fallback = () => {\n\t\t\tif (positionNow.equals(this.editor.getPosition()!)) {\n\t\t\t\tthis._commandService.executeCommand(arg.fallback);\n\t\t\t}\n\t\t};\n\n\t\tconst makesTextEdit = (item: CompletionItem): boolean => {\n\t\t\tif (item.completion.insertTextRules! & CompletionItemInsertTextRule.InsertAsSnippet || item.completion.additionalTextEdits) {\n\t\t\t\t// snippet, other editor -> makes edit\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst position = this.editor.getPosition()!;\n\t\t\tconst startColumn = item.editStart.column;\n\t\t\tconst endColumn = position.column;\n\t\t\tif (endColumn - startColumn !== item.completion.insertText.length) {\n\t\t\t\t// unequal lengths -> makes edit\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tconst textNow = this.editor.getModel()!.getValueInRange({\n\t\t\t\tstartLineNumber: position.lineNumber,\n\t\t\t\tstartColumn,\n\t\t\t\tendLineNumber: position.lineNumber,\n\t\t\t\tendColumn\n\t\t\t});\n\t\t\t// unequal text -> makes edit\n\t\t\treturn textNow !== item.completion.insertText;\n\t\t};\n\n\t\tEvent.once(this.model.onDidTrigger)(_ => {\n\t\t\t// wait for trigger because only then the cancel-event is trustworthy\n\t\t\tconst listener: IDisposable[] = [];\n\n\t\t\tEvent.any<unknown>(this.model.onDidTrigger, this.model.onDidCancel)(() => {\n\t\t\t\t// retrigger or cancel -> try to type default text\n\t\t\t\tdispose(listener);\n\t\t\t\tfallback();\n\t\t\t}, undefined, listener);\n\n\t\t\tthis.model.onDidSuggest(({ completionModel }) => {\n\t\t\t\tdispose(listener);\n\t\t\t\tif (completionModel.items.length === 0) {\n\t\t\t\t\tfallback();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst index = this._memoryService.select(this.editor.getModel()!, this.editor.getPosition()!, completionModel.items);\n\t\t\t\tconst item = completionModel.items[index];\n\t\t\t\tif (!makesTextEdit(item)) {\n\t\t\t\t\tfallback();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.editor.pushUndoStop();\n\t\t\t\tthis._insertSuggestion({ index, item, model: completionModel }, InsertFlags.KeepAlternativeSuggestions | InsertFlags.NoBeforeUndoStop | InsertFlags.NoAfterUndoStop);\n\n\t\t\t}, undefined, listener);\n\t\t});\n\n\t\tthis.model.trigger({ auto: false, shy: true });\n\t\tthis.editor.revealPosition(positionNow, ScrollType.Smooth);\n\t\tthis.editor.focus();\n\t}\n\n\tacceptSelectedSuggestion(keepAlternativeSuggestions: boolean, alternativeOverwriteConfig: boolean): void {\n\t\tconst item = this.widget.value.getFocusedItem();\n\t\tlet flags = 0;\n\t\tif (keepAlternativeSuggestions) {\n\t\t\tflags |= InsertFlags.KeepAlternativeSuggestions;\n\t\t}\n\t\tif (alternativeOverwriteConfig) {\n\t\t\tflags |= InsertFlags.AlternativeOverwriteConfig;\n\t\t}\n\t\tthis._insertSuggestion(item, flags);\n\t}\n\n\tacceptNextSuggestion() {\n\t\tthis._alternatives.value.next();\n\t}\n\n\tacceptPrevSuggestion() {\n\t\tthis._alternatives.value.prev();\n\t}\n\n\tcancelSuggestWidget(): void {\n\t\tthis.model.cancel();\n\t\tthis.model.clear();\n\t\tthis.widget.value.hideWidget();\n\t}\n\n\tfocusSuggestion(): void {\n\t\tthis.widget.value.focusSelected();\n\t}\n\n\tselectNextSuggestion(): void {\n\t\tthis.widget.value.selectNext();\n\t}\n\n\tselectNextPageSuggestion(): void {\n\t\tthis.widget.value.selectNextPage();\n\t}\n\n\tselectLastSuggestion(): void {\n\t\tthis.widget.value.selectLast();\n\t}\n\n\tselectPrevSuggestion(): void {\n\t\tthis.widget.value.selectPrevious();\n\t}\n\n\tselectPrevPageSuggestion(): void {\n\t\tthis.widget.value.selectPreviousPage();\n\t}\n\n\tselectFirstSuggestion(): void {\n\t\tthis.widget.value.selectFirst();\n\t}\n\n\ttoggleSuggestionDetails(): void {\n\t\tthis.widget.value.toggleDetails();\n\t}\n\n\ttoggleExplainMode(): void {\n\t\tthis.widget.value.toggleExplainMode();\n\t}\n\n\ttoggleSuggestionFocus(): void {\n\t\tthis.widget.value.toggleDetailsFocus();\n\t}\n\n\tresetWidgetSize(): void {\n\t\tthis.widget.value.resetPersistedSize();\n\t}\n\n\tforceRenderingAbove() {\n\t\tif (this.widget.isInitialized) {\n\t\t\tthis.widget.value.forceRenderingAbove();\n\t\t} else {\n\t\t\t// Defer this until the widget is created\n\t\t\tthis._wantsForceRenderingAbove = true;\n\t\t}\n\t}\n\n\tstopForceRenderingAbove() {\n\t\tif (this.widget.isInitialized) {\n\t\t\tthis.widget.value.stopForceRenderingAbove();\n\t\t} else {\n\t\t\tthis._wantsForceRenderingAbove = false;\n\t\t}\n\t}\n\n\tregisterSelector(selector: ISuggestItemPreselector): IDisposable {\n\t\treturn this._selectors.register(selector);\n\t}\n}\n\nclass PriorityRegistry<T> {\n\tprivate readonly _items = new Array<T>();\n\n\tconstructor(private readonly prioritySelector: (item: T) => number) { }\n\n\tregister(value: T): IDisposable {\n\t\tif (this._items.indexOf(value) !== -1) {\n\t\t\tthrow new Error('Value is already registered');\n\t\t}\n\t\tthis._items.push(value);\n\t\tthis._items.sort((s1, s2) => this.prioritySelector(s2) - this.prioritySelector(s1));\n\n\t\treturn {\n\t\t\tdispose: () => {\n\t\t\t\tconst idx = this._items.indexOf(value);\n\t\t\t\tif (idx >= 0) {\n\t\t\t\t\tthis._items.splice(idx, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n\n\tget itemsOrderedByPriorityDesc(): readonly T[] {\n\t\treturn this._items;\n\t}\n}\n\nexport class TriggerSuggestAction extends EditorAction {\n\n\tstatic readonly id = 'editor.action.triggerSuggest';\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: TriggerSuggestAction.id,\n\t\t\tlabel: nls.localize2('suggest.trigger.label', \"Trigger Suggest\"),\n\t\t\tprecondition: ContextKeyExpr.and(EditorContextKeys.writable, EditorContextKeys.hasCompletionItemProvider, SuggestContext.Visible.toNegated()),\n\t\t\tkbOpts: {\n\t\t\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.Space,\n\t\t\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.KeyI],\n\t\t\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.Space, secondary: [KeyMod.Alt | KeyCode.Escape, KeyMod.CtrlCmd | KeyCode.KeyI] },\n\t\t\t\tweight: KeybindingWeight.EditorContrib\n\t\t\t}\n\t\t});\n\t}\n\n\trun(_accessor: ServicesAccessor, editor: ICodeEditor, args: unknown): void {\n\t\tconst controller = SuggestController.get(editor);\n\n\t\tif (!controller) {\n\t\t\treturn;\n\t\t}\n\n\t\ttype TriggerArgs = { auto: boolean };\n\t\tlet auto: boolean | undefined;\n\t\tif (args && typeof args === 'object') {\n\t\t\tif ((<TriggerArgs>args).auto === true) {\n\t\t\t\tauto = true;\n\t\t\t}\n\t\t}\n\n\t\tcontroller.triggerSuggest(undefined, auto, undefined);\n\t}\n}\n\nregisterEditorContribution(SuggestController.ID, SuggestController, EditorContributionInstantiation.BeforeFirstInteraction);\nregisterEditorAction(TriggerSuggestAction);\n\nconst weight = KeybindingWeight.EditorContrib + 90;\n\nconst SuggestCommand = EditorCommand.bindToContribution<SuggestController>(SuggestController.get);\n\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'acceptSelectedSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n\thandler(x) {\n\t\tx.acceptSelectedSuggestion(true, false);\n\t},\n\tkbOpts: [{\n\t\t// normal tab\n\t\tprimary: KeyCode.Tab,\n\t\tkbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus),\n\t\tweight,\n\t}, {\n\t\t// accept on enter has special rules\n\t\tprimary: KeyCode.Enter,\n\t\tkbExpr: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.AcceptSuggestionsOnEnter, SuggestContext.MakesTextEdit),\n\t\tweight,\n\t}],\n\tmenuOpts: [{\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\ttitle: nls.localize('accept.insert', \"Insert\"),\n\t\tgroup: 'left',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange.toNegated())\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\ttitle: nls.localize('accept.insert', \"Insert\"),\n\t\tgroup: 'left',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert'))\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\ttitle: nls.localize('accept.replace', \"Replace\"),\n\t\tgroup: 'left',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace'))\n\t}]\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'acceptAlternativeSelectedSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, EditorContextKeys.textInputFocus, SuggestContext.HasFocusedSuggestion),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.Shift | KeyCode.Enter,\n\t\tsecondary: [KeyMod.Shift | KeyCode.Tab],\n\t},\n\thandler(x) {\n\t\tx.acceptSelectedSuggestion(false, true);\n\t},\n\tmenuOpts: [{\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'left',\n\t\torder: 2,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('insert')),\n\t\ttitle: nls.localize('accept.replace', \"Replace\")\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'left',\n\t\torder: 2,\n\t\twhen: ContextKeyExpr.and(SuggestContext.HasFocusedSuggestion, SuggestContext.HasInsertAndReplaceRange, SuggestContext.InsertMode.isEqualTo('replace')),\n\t\ttitle: nls.localize('accept.insert', \"Insert\")\n\t}]\n}));\n\n\n// continue to support the old command\nCommandsRegistry.registerCommandAlias('acceptSelectedSuggestionOnEnter', 'acceptSelectedSuggestion');\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'hideSuggestWidget',\n\tprecondition: SuggestContext.Visible,\n\thandler: x => x.cancelSuggestWidget(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.Escape,\n\t\tsecondary: [KeyMod.Shift | KeyCode.Escape]\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectNextSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectNextSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.DownArrow,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.DownArrow],\n\t\tmac: { primary: KeyCode.DownArrow, secondary: [KeyMod.CtrlCmd | KeyCode.DownArrow, KeyMod.WinCtrl | KeyCode.KeyN] }\n\t},\n\tmenuOpts: {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'left',\n\t\torder: 0,\n\t\twhen: SuggestContext.HasFocusedSuggestion.toNegated(),\n\t\ttitle: nls.localize('focus.suggestion', \"Select\")\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectNextPageSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectNextPageSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.PageDown,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.PageDown]\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectLastSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectLastSuggestion()\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectPrevSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectPrevSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.UpArrow,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.UpArrow],\n\t\tmac: { primary: KeyCode.UpArrow, secondary: [KeyMod.CtrlCmd | KeyCode.UpArrow, KeyMod.WinCtrl | KeyCode.KeyP] }\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectPrevPageSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectPrevPageSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.PageUp,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.PageUp]\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'selectFirstSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, ContextKeyExpr.or(SuggestContext.MultipleSuggestions, SuggestContext.HasFocusedSuggestion.negate())),\n\thandler: c => c.selectFirstSuggestion()\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'focusSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion.negate()),\n\thandler: x => x.focusSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.Space,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.KeyI],\n\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.Space, secondary: [KeyMod.CtrlCmd | KeyCode.KeyI] }\n\t},\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'focusAndAcceptSuggestion',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion.negate()),\n\thandler: c => {\n\t\tc.focusSuggestion();\n\t\tc.acceptSelectedSuggestion(true, false);\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'toggleSuggestionDetails',\n\tprecondition: ContextKeyExpr.and(SuggestContext.Visible, SuggestContext.HasFocusedSuggestion),\n\thandler: x => x.toggleSuggestionDetails(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.Space,\n\t\tsecondary: [KeyMod.CtrlCmd | KeyCode.KeyI],\n\t\tmac: { primary: KeyMod.WinCtrl | KeyCode.Space, secondary: [KeyMod.CtrlCmd | KeyCode.KeyI] }\n\t},\n\tmenuOpts: [{\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'right',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.DetailsVisible, SuggestContext.CanResolve),\n\t\ttitle: nls.localize('detail.more', \"Show Less\")\n\t}, {\n\t\tmenuId: suggestWidgetStatusbarMenu,\n\t\tgroup: 'right',\n\t\torder: 1,\n\t\twhen: ContextKeyExpr.and(SuggestContext.DetailsVisible.toNegated(), SuggestContext.CanResolve),\n\t\ttitle: nls.localize('detail.less', \"Show More\")\n\t}]\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'toggleExplainMode',\n\tprecondition: SuggestContext.Visible,\n\thandler: x => x.toggleExplainMode(),\n\tkbOpts: {\n\t\tweight: KeybindingWeight.EditorContrib,\n\t\tprimary: KeyMod.CtrlCmd | KeyCode.Slash,\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'toggleSuggestionFocus',\n\tprecondition: SuggestContext.Visible,\n\thandler: x => x.toggleSuggestionFocus(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.CtrlCmd | KeyMod.Alt | KeyCode.Space,\n\t\tmac: { primary: KeyMod.WinCtrl | KeyMod.Alt | KeyCode.Space }\n\t}\n}));\n\n//#region tab completions\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'insertBestCompletion',\n\tprecondition: ContextKeyExpr.and(\n\t\tEditorContextKeys.textInputFocus,\n\t\tContextKeyExpr.equals('config.editor.tabCompletion', 'on'),\n\t\tWordContextKey.AtEnd,\n\t\tSuggestContext.Visible.toNegated(),\n\t\tSuggestAlternatives.OtherSuggestions.toNegated(),\n\t\tSnippetController2.InSnippetMode.toNegated()\n\t),\n\thandler: (x, arg) => {\n\n\t\tx.triggerSuggestAndAcceptBest(isObject(arg) ? { fallback: 'tab', ...arg } : { fallback: 'tab' });\n\t},\n\tkbOpts: {\n\t\tweight,\n\t\tprimary: KeyCode.Tab\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'insertNextSuggestion',\n\tprecondition: ContextKeyExpr.and(\n\t\tEditorContextKeys.textInputFocus,\n\t\tContextKeyExpr.equals('config.editor.tabCompletion', 'on'),\n\t\tSuggestAlternatives.OtherSuggestions,\n\t\tSuggestContext.Visible.toNegated(),\n\t\tSnippetController2.InSnippetMode.toNegated()\n\t),\n\thandler: x => x.acceptNextSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyCode.Tab\n\t}\n}));\n\nregisterEditorCommand(new SuggestCommand({\n\tid: 'insertPrevSuggestion',\n\tprecondition: ContextKeyExpr.and(\n\t\tEditorContextKeys.textInputFocus,\n\t\tContextKeyExpr.equals('config.editor.tabCompletion', 'on'),\n\t\tSuggestAlternatives.OtherSuggestions,\n\t\tSuggestContext.Visible.toNegated(),\n\t\tSnippetController2.InSnippetMode.toNegated()\n\t),\n\thandler: x => x.acceptPrevSuggestion(),\n\tkbOpts: {\n\t\tweight: weight,\n\t\tkbExpr: EditorContextKeys.textInputFocus,\n\t\tprimary: KeyMod.Shift | KeyCode.Tab\n\t}\n}));\n\n\nregisterEditorCommand(new class extends EditorCommand {\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'suggestWidgetCopy',\n\t\t\tprecondition: SuggestContext.DetailsFocused,\n\t\t\tkbOpts: {\n\t\t\t\tweight: weight + 10,\n\t\t\t\tkbExpr: SuggestContext.DetailsFocused,\n\t\t\t\tprimary: KeyMod.CtrlCmd | KeyCode.KeyC,\n\t\t\t\twin: { primary: KeyMod.CtrlCmd | KeyCode.KeyC, secondary: [KeyMod.CtrlCmd | KeyCode.Insert] }\n\t\t\t}\n\t\t});\n\t}\n\trunEditorCommand(_accessor: ServicesAccessor, editor: ICodeEditor) {\n\t\tgetWindow(editor.getDomNode()).document.execCommand('copy');\n\t}\n}());\n\nregisterEditorAction(class extends EditorAction {\n\n\tconstructor() {\n\t\tsuper({\n\t\t\tid: 'editor.action.resetSuggestSize',\n\t\t\tlabel: nls.localize2('suggest.reset.label', \"Reset Suggest Widget Size\"),\n\t\t\tprecondition: undefined\n\t\t});\n\t}\n\n\trun(_accessor: ServicesAccessor, editor: ICodeEditor): void {\n\t\tSuggestController.get(editor)?.resetWidgetSize();\n\t}\n});\n"]}
@@ -34,6 +34,7 @@ class SuggestInlineCompletion {
34
34
  this.command = command;
35
35
  this.gutterMenuLinkAction = gutterMenuLinkAction;
36
36
  this.completion = completion;
37
+ this.doNotLog = true;
37
38
  }
38
39
  }
39
40
  let InlineCompletionResults = class InlineCompletionResults extends RefCountedDisposable {