@theia/debug 1.67.0-next.3 → 1.67.0-next.56

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 (346) hide show
  1. package/README.md +1 -1
  2. package/package.json +15 -15
  3. package/src/browser/breakpoint/breakpoint-manager.ts +69 -16
  4. package/src/browser/breakpoint/breakpoint-marker.ts +38 -0
  5. package/src/browser/breakpoint/debug-data-breakpoint-actions.ts +170 -0
  6. package/src/browser/console/debug-console-items.tsx +5 -1
  7. package/src/browser/debug-frontend-application-contribution.ts +52 -0
  8. package/src/browser/debug-frontend-module.ts +4 -0
  9. package/src/browser/debug-session-manager.ts +18 -0
  10. package/src/browser/debug-session.tsx +31 -0
  11. package/src/browser/editor/debug-expression-provider.ts +49 -4
  12. package/src/browser/editor/debug-hover-widget.ts +7 -52
  13. package/src/browser/model/debug-data-breakpoint.tsx +79 -0
  14. package/src/browser/style/index.css +4 -0
  15. package/src/browser/view/debug-breakpoints-source.tsx +4 -10
  16. package/src/browser/view/debug-stack-frames-widget.ts +6 -2
  17. package/src/browser/view/debug-variables-widget.ts +99 -2
  18. package/src/browser/view/debug-view-model.ts +5 -0
  19. package/lib/browser/breakpoint/breakpoint-manager.d.ts +0 -71
  20. package/lib/browser/breakpoint/breakpoint-manager.d.ts.map +0 -1
  21. package/lib/browser/breakpoint/breakpoint-manager.js +0 -321
  22. package/lib/browser/breakpoint/breakpoint-manager.js.map +0 -1
  23. package/lib/browser/breakpoint/breakpoint-marker.d.ts +0 -42
  24. package/lib/browser/breakpoint/breakpoint-marker.d.ts.map +0 -1
  25. package/lib/browser/breakpoint/breakpoint-marker.js +0 -88
  26. package/lib/browser/breakpoint/breakpoint-marker.js.map +0 -1
  27. package/lib/browser/console/debug-console-contribution.d.ts +0 -45
  28. package/lib/browser/console/debug-console-contribution.d.ts.map +0 -1
  29. package/lib/browser/console/debug-console-contribution.js +0 -233
  30. package/lib/browser/console/debug-console-contribution.js.map +0 -1
  31. package/lib/browser/console/debug-console-items.d.ts +0 -97
  32. package/lib/browser/console/debug-console-items.d.ts.map +0 -1
  33. package/lib/browser/console/debug-console-items.js +0 -343
  34. package/lib/browser/console/debug-console-items.js.map +0 -1
  35. package/lib/browser/console/debug-console-session.d.ts +0 -32
  36. package/lib/browser/console/debug-console-session.d.ts.map +0 -1
  37. package/lib/browser/console/debug-console-session.js +0 -192
  38. package/lib/browser/console/debug-console-session.js.map +0 -1
  39. package/lib/browser/debug-call-stack-item-type-key.d.ts +0 -4
  40. package/lib/browser/debug-call-stack-item-type-key.d.ts.map +0 -1
  41. package/lib/browser/debug-call-stack-item-type-key.js +0 -20
  42. package/lib/browser/debug-call-stack-item-type-key.js.map +0 -1
  43. package/lib/browser/debug-configuration-manager.d.ts +0 -103
  44. package/lib/browser/debug-configuration-manager.d.ts.map +0 -1
  45. package/lib/browser/debug-configuration-manager.js +0 -545
  46. package/lib/browser/debug-configuration-manager.js.map +0 -1
  47. package/lib/browser/debug-configuration-model.d.ts +0 -30
  48. package/lib/browser/debug-configuration-model.d.ts.map +0 -1
  49. package/lib/browser/debug-configuration-model.js +0 -80
  50. package/lib/browser/debug-configuration-model.js.map +0 -1
  51. package/lib/browser/debug-contribution.d.ts +0 -23
  52. package/lib/browser/debug-contribution.d.ts.map +0 -1
  53. package/lib/browser/debug-contribution.js +0 -20
  54. package/lib/browser/debug-contribution.js.map +0 -1
  55. package/lib/browser/debug-frontend-application-contribution.d.ts +0 -246
  56. package/lib/browser/debug-frontend-application-contribution.d.ts.map +0 -1
  57. package/lib/browser/debug-frontend-application-contribution.js +0 -1645
  58. package/lib/browser/debug-frontend-application-contribution.js.map +0 -1
  59. package/lib/browser/debug-frontend-module.d.ts +0 -5
  60. package/lib/browser/debug-frontend-module.d.ts.map +0 -1
  61. package/lib/browser/debug-frontend-module.js +0 -108
  62. package/lib/browser/debug-frontend-module.js.map +0 -1
  63. package/lib/browser/debug-package.spec.d.ts +0 -1
  64. package/lib/browser/debug-package.spec.d.ts.map +0 -1
  65. package/lib/browser/debug-package.spec.js +0 -19
  66. package/lib/browser/debug-package.spec.js.map +0 -1
  67. package/lib/browser/debug-prefix-configuration.d.ts +0 -52
  68. package/lib/browser/debug-prefix-configuration.d.ts.map +0 -1
  69. package/lib/browser/debug-prefix-configuration.js +0 -202
  70. package/lib/browser/debug-prefix-configuration.js.map +0 -1
  71. package/lib/browser/debug-resource.d.ts +0 -15
  72. package/lib/browser/debug-resource.d.ts.map +0 -1
  73. package/lib/browser/debug-resource.js +0 -58
  74. package/lib/browser/debug-resource.js.map +0 -1
  75. package/lib/browser/debug-schema-updater.d.ts +0 -14
  76. package/lib/browser/debug-schema-updater.d.ts.map +0 -1
  77. package/lib/browser/debug-schema-updater.js +0 -161
  78. package/lib/browser/debug-schema-updater.js.map +0 -1
  79. package/lib/browser/debug-session-configuration-label-provider.d.ts +0 -11
  80. package/lib/browser/debug-session-configuration-label-provider.d.ts.map +0 -1
  81. package/lib/browser/debug-session-configuration-label-provider.js +0 -48
  82. package/lib/browser/debug-session-configuration-label-provider.js.map +0 -1
  83. package/lib/browser/debug-session-configuration-label-provider.spec.d.ts +0 -2
  84. package/lib/browser/debug-session-configuration-label-provider.spec.d.ts.map +0 -1
  85. package/lib/browser/debug-session-configuration-label-provider.spec.js +0 -84
  86. package/lib/browser/debug-session-configuration-label-provider.spec.js.map +0 -1
  87. package/lib/browser/debug-session-connection.d.ts +0 -111
  88. package/lib/browser/debug-session-connection.d.ts.map +0 -1
  89. package/lib/browser/debug-session-connection.js +0 -259
  90. package/lib/browser/debug-session-connection.js.map +0 -1
  91. package/lib/browser/debug-session-contribution.d.ts +0 -77
  92. package/lib/browser/debug-session-contribution.d.ts.map +0 -1
  93. package/lib/browser/debug-session-contribution.js +0 -143
  94. package/lib/browser/debug-session-contribution.js.map +0 -1
  95. package/lib/browser/debug-session-manager.d.ts +0 -138
  96. package/lib/browser/debug-session-manager.d.ts.map +0 -1
  97. package/lib/browser/debug-session-manager.js +0 -620
  98. package/lib/browser/debug-session-manager.js.map +0 -1
  99. package/lib/browser/debug-session-options.d.ts +0 -56
  100. package/lib/browser/debug-session-options.d.ts.map +0 -1
  101. package/lib/browser/debug-session-options.js +0 -92
  102. package/lib/browser/debug-session-options.js.map +0 -1
  103. package/lib/browser/debug-session.d.ts +0 -192
  104. package/lib/browser/debug-session.d.ts.map +0 -1
  105. package/lib/browser/debug-session.js +0 -913
  106. package/lib/browser/debug-session.js.map +0 -1
  107. package/lib/browser/debug-tab-bar-decorator.d.ts +0 -17
  108. package/lib/browser/debug-tab-bar-decorator.d.ts.map +0 -1
  109. package/lib/browser/debug-tab-bar-decorator.js +0 -63
  110. package/lib/browser/debug-tab-bar-decorator.js.map +0 -1
  111. package/lib/browser/debug-watch-manager.d.ts +0 -22
  112. package/lib/browser/debug-watch-manager.d.ts.map +0 -1
  113. package/lib/browser/debug-watch-manager.js +0 -86
  114. package/lib/browser/debug-watch-manager.js.map +0 -1
  115. package/lib/browser/disassembly-view/disassembly-view-accessibility-provider.d.ts +0 -7
  116. package/lib/browser/disassembly-view/disassembly-view-accessibility-provider.d.ts.map +0 -1
  117. package/lib/browser/disassembly-view/disassembly-view-accessibility-provider.js +0 -39
  118. package/lib/browser/disassembly-view/disassembly-view-accessibility-provider.js.map +0 -1
  119. package/lib/browser/disassembly-view/disassembly-view-breakpoint-renderer.d.ts +0 -20
  120. package/lib/browser/disassembly-view/disassembly-view-breakpoint-renderer.d.ts.map +0 -1
  121. package/lib/browser/disassembly-view/disassembly-view-breakpoint-renderer.js +0 -111
  122. package/lib/browser/disassembly-view/disassembly-view-breakpoint-renderer.js.map +0 -1
  123. package/lib/browser/disassembly-view/disassembly-view-contribution.d.ts +0 -25
  124. package/lib/browser/disassembly-view/disassembly-view-contribution.d.ts.map +0 -1
  125. package/lib/browser/disassembly-view/disassembly-view-contribution.js +0 -124
  126. package/lib/browser/disassembly-view/disassembly-view-contribution.js.map +0 -1
  127. package/lib/browser/disassembly-view/disassembly-view-instruction-renderer.d.ts +0 -39
  128. package/lib/browser/disassembly-view/disassembly-view-instruction-renderer.d.ts.map +0 -1
  129. package/lib/browser/disassembly-view/disassembly-view-instruction-renderer.js +0 -213
  130. package/lib/browser/disassembly-view/disassembly-view-instruction-renderer.js.map +0 -1
  131. package/lib/browser/disassembly-view/disassembly-view-table-delegate.d.ts +0 -16
  132. package/lib/browser/disassembly-view/disassembly-view-table-delegate.d.ts.map +0 -1
  133. package/lib/browser/disassembly-view/disassembly-view-table-delegate.js +0 -39
  134. package/lib/browser/disassembly-view/disassembly-view-table-delegate.js.map +0 -1
  135. package/lib/browser/disassembly-view/disassembly-view-utilities.d.ts +0 -38
  136. package/lib/browser/disassembly-view/disassembly-view-utilities.d.ts.map +0 -1
  137. package/lib/browser/disassembly-view/disassembly-view-utilities.js +0 -18
  138. package/lib/browser/disassembly-view/disassembly-view-utilities.js.map +0 -1
  139. package/lib/browser/disassembly-view/disassembly-view-widget.d.ts +0 -61
  140. package/lib/browser/disassembly-view/disassembly-view-widget.d.ts.map +0 -1
  141. package/lib/browser/disassembly-view/disassembly-view-widget.js +0 -446
  142. package/lib/browser/disassembly-view/disassembly-view-widget.js.map +0 -1
  143. package/lib/browser/editor/debug-breakpoint-widget.d.ts +0 -58
  144. package/lib/browser/editor/debug-breakpoint-widget.d.ts.map +0 -1
  145. package/lib/browser/editor/debug-breakpoint-widget.js +0 -270
  146. package/lib/browser/editor/debug-breakpoint-widget.js.map +0 -1
  147. package/lib/browser/editor/debug-editor-model.d.ts +0 -87
  148. package/lib/browser/editor/debug-editor-model.d.ts.map +0 -1
  149. package/lib/browser/editor/debug-editor-model.js +0 -499
  150. package/lib/browser/editor/debug-editor-model.js.map +0 -1
  151. package/lib/browser/editor/debug-editor-service.d.ts +0 -38
  152. package/lib/browser/editor/debug-editor-service.d.ts.map +0 -1
  153. package/lib/browser/editor/debug-editor-service.js +0 -183
  154. package/lib/browser/editor/debug-editor-service.js.map +0 -1
  155. package/lib/browser/editor/debug-editor.d.ts +0 -4
  156. package/lib/browser/editor/debug-editor.d.ts.map +0 -1
  157. package/lib/browser/editor/debug-editor.js +0 -20
  158. package/lib/browser/editor/debug-editor.js.map +0 -1
  159. package/lib/browser/editor/debug-exception-widget.d.ts +0 -30
  160. package/lib/browser/editor/debug-exception-widget.d.ts.map +0 -1
  161. package/lib/browser/editor/debug-exception-widget.js +0 -107
  162. package/lib/browser/editor/debug-exception-widget.js.map +0 -1
  163. package/lib/browser/editor/debug-expression-provider.d.ts +0 -12
  164. package/lib/browser/editor/debug-expression-provider.d.ts.map +0 -1
  165. package/lib/browser/editor/debug-expression-provider.js +0 -77
  166. package/lib/browser/editor/debug-expression-provider.js.map +0 -1
  167. package/lib/browser/editor/debug-hover-source.d.ts +0 -19
  168. package/lib/browser/editor/debug-hover-source.d.ts.map +0 -1
  169. package/lib/browser/editor/debug-hover-source.js +0 -110
  170. package/lib/browser/editor/debug-hover-source.js.map +0 -1
  171. package/lib/browser/editor/debug-hover-widget.d.ts +0 -61
  172. package/lib/browser/editor/debug-hover-widget.d.ts.map +0 -1
  173. package/lib/browser/editor/debug-hover-widget.js +0 -304
  174. package/lib/browser/editor/debug-hover-widget.js.map +0 -1
  175. package/lib/browser/editor/debug-inline-value-decorator.d.ts +0 -20
  176. package/lib/browser/editor/debug-inline-value-decorator.d.ts.map +0 -1
  177. package/lib/browser/editor/debug-inline-value-decorator.js +0 -326
  178. package/lib/browser/editor/debug-inline-value-decorator.js.map +0 -1
  179. package/lib/browser/model/debug-breakpoint.d.ts +0 -48
  180. package/lib/browser/model/debug-breakpoint.d.ts.map +0 -1
  181. package/lib/browser/model/debug-breakpoint.js +0 -111
  182. package/lib/browser/model/debug-breakpoint.js.map +0 -1
  183. package/lib/browser/model/debug-function-breakpoint.d.ts +0 -19
  184. package/lib/browser/model/debug-function-breakpoint.d.ts.map +0 -1
  185. package/lib/browser/model/debug-function-breakpoint.js +0 -93
  186. package/lib/browser/model/debug-function-breakpoint.js.map +0 -1
  187. package/lib/browser/model/debug-instruction-breakpoint.d.ts +0 -15
  188. package/lib/browser/model/debug-instruction-breakpoint.d.ts.map +0 -1
  189. package/lib/browser/model/debug-instruction-breakpoint.js +0 -66
  190. package/lib/browser/model/debug-instruction-breakpoint.js.map +0 -1
  191. package/lib/browser/model/debug-source-breakpoint.d.ts +0 -39
  192. package/lib/browser/model/debug-source-breakpoint.d.ts.map +0 -1
  193. package/lib/browser/model/debug-source-breakpoint.js +0 -219
  194. package/lib/browser/model/debug-source-breakpoint.js.map +0 -1
  195. package/lib/browser/model/debug-source.d.ts +0 -25
  196. package/lib/browser/model/debug-source.d.ts.map +0 -1
  197. package/lib/browser/model/debug-source.js +0 -81
  198. package/lib/browser/model/debug-source.js.map +0 -1
  199. package/lib/browser/model/debug-stack-frame.d.ts +0 -45
  200. package/lib/browser/model/debug-stack-frame.d.ts.map +0 -1
  201. package/lib/browser/model/debug-stack-frame.js +0 -157
  202. package/lib/browser/model/debug-stack-frame.js.map +0 -1
  203. package/lib/browser/model/debug-thread.d.ts +0 -68
  204. package/lib/browser/model/debug-thread.d.ts.map +0 -1
  205. package/lib/browser/model/debug-thread.js +0 -262
  206. package/lib/browser/model/debug-thread.js.map +0 -1
  207. package/lib/browser/view/debug-action.d.ts +0 -18
  208. package/lib/browser/view/debug-action.d.ts.map +0 -1
  209. package/lib/browser/view/debug-action.js +0 -44
  210. package/lib/browser/view/debug-action.js.map +0 -1
  211. package/lib/browser/view/debug-breakpoints-source.d.ts +0 -10
  212. package/lib/browser/view/debug-breakpoints-source.d.ts.map +0 -1
  213. package/lib/browser/view/debug-breakpoints-source.js +0 -63
  214. package/lib/browser/view/debug-breakpoints-source.js.map +0 -1
  215. package/lib/browser/view/debug-breakpoints-widget.d.ts +0 -23
  216. package/lib/browser/view/debug-breakpoints-widget.d.ts.map +0 -1
  217. package/lib/browser/view/debug-breakpoints-widget.js +0 -81
  218. package/lib/browser/view/debug-breakpoints-widget.js.map +0 -1
  219. package/lib/browser/view/debug-configuration-select.d.ts +0 -67
  220. package/lib/browser/view/debug-configuration-select.d.ts.map +0 -1
  221. package/lib/browser/view/debug-configuration-select.js +0 -212
  222. package/lib/browser/view/debug-configuration-select.js.map +0 -1
  223. package/lib/browser/view/debug-configuration-widget.d.ts +0 -33
  224. package/lib/browser/view/debug-configuration-widget.d.ts.map +0 -1
  225. package/lib/browser/view/debug-configuration-widget.js +0 -137
  226. package/lib/browser/view/debug-configuration-widget.js.map +0 -1
  227. package/lib/browser/view/debug-exception-breakpoint.d.ts +0 -15
  228. package/lib/browser/view/debug-exception-breakpoint.d.ts.map +0 -1
  229. package/lib/browser/view/debug-exception-breakpoint.js +0 -62
  230. package/lib/browser/view/debug-exception-breakpoint.js.map +0 -1
  231. package/lib/browser/view/debug-session-widget.d.ts +0 -29
  232. package/lib/browser/view/debug-session-widget.d.ts.map +0 -1
  233. package/lib/browser/view/debug-session-widget.js +0 -127
  234. package/lib/browser/view/debug-session-widget.js.map +0 -1
  235. package/lib/browser/view/debug-stack-frames-source.d.ts +0 -18
  236. package/lib/browser/view/debug-stack-frames-source.d.ts.map +0 -1
  237. package/lib/browser/view/debug-stack-frames-source.js +0 -83
  238. package/lib/browser/view/debug-stack-frames-source.js.map +0 -1
  239. package/lib/browser/view/debug-stack-frames-widget.d.ts +0 -25
  240. package/lib/browser/view/debug-stack-frames-widget.d.ts.map +0 -1
  241. package/lib/browser/view/debug-stack-frames-widget.js +0 -147
  242. package/lib/browser/view/debug-stack-frames-widget.js.map +0 -1
  243. package/lib/browser/view/debug-threads-source.d.ts +0 -9
  244. package/lib/browser/view/debug-threads-source.d.ts.map +0 -1
  245. package/lib/browser/view/debug-threads-source.js +0 -56
  246. package/lib/browser/view/debug-threads-source.js.map +0 -1
  247. package/lib/browser/view/debug-threads-widget.d.ts +0 -27
  248. package/lib/browser/view/debug-threads-widget.d.ts.map +0 -1
  249. package/lib/browser/view/debug-threads-widget.js +0 -139
  250. package/lib/browser/view/debug-threads-widget.js.map +0 -1
  251. package/lib/browser/view/debug-toolbar-widget.d.ts +0 -34
  252. package/lib/browser/view/debug-toolbar-widget.d.ts.map +0 -1
  253. package/lib/browser/view/debug-toolbar-widget.js +0 -139
  254. package/lib/browser/view/debug-toolbar-widget.js.map +0 -1
  255. package/lib/browser/view/debug-variables-source.d.ts +0 -10
  256. package/lib/browser/view/debug-variables-source.d.ts.map +0 -1
  257. package/lib/browser/view/debug-variables-source.js +0 -53
  258. package/lib/browser/view/debug-variables-source.js.map +0 -1
  259. package/lib/browser/view/debug-variables-widget.d.ts +0 -17
  260. package/lib/browser/view/debug-variables-widget.d.ts.map +0 -1
  261. package/lib/browser/view/debug-variables-widget.js +0 -71
  262. package/lib/browser/view/debug-variables-widget.js.map +0 -1
  263. package/lib/browser/view/debug-view-model.d.ts +0 -53
  264. package/lib/browser/view/debug-view-model.d.ts.map +0 -1
  265. package/lib/browser/view/debug-view-model.js +0 -212
  266. package/lib/browser/view/debug-view-model.js.map +0 -1
  267. package/lib/browser/view/debug-watch-expression.d.ts +0 -33
  268. package/lib/browser/view/debug-watch-expression.d.ts.map +0 -1
  269. package/lib/browser/view/debug-watch-expression.js +0 -93
  270. package/lib/browser/view/debug-watch-expression.js.map +0 -1
  271. package/lib/browser/view/debug-watch-source.d.ts +0 -10
  272. package/lib/browser/view/debug-watch-source.d.ts.map +0 -1
  273. package/lib/browser/view/debug-watch-source.js +0 -51
  274. package/lib/browser/view/debug-watch-source.js.map +0 -1
  275. package/lib/browser/view/debug-watch-widget.d.ts +0 -17
  276. package/lib/browser/view/debug-watch-widget.d.ts.map +0 -1
  277. package/lib/browser/view/debug-watch-widget.js +0 -71
  278. package/lib/browser/view/debug-watch-widget.js.map +0 -1
  279. package/lib/browser/view/debug-widget.d.ts +0 -24
  280. package/lib/browser/view/debug-widget.d.ts.map +0 -1
  281. package/lib/browser/view/debug-widget.js +0 -101
  282. package/lib/browser/view/debug-widget.js.map +0 -1
  283. package/lib/common/debug-adapter-contribution-registry.d.ts +0 -60
  284. package/lib/common/debug-adapter-contribution-registry.d.ts.map +0 -1
  285. package/lib/common/debug-adapter-contribution-registry.js +0 -205
  286. package/lib/common/debug-adapter-contribution-registry.js.map +0 -1
  287. package/lib/common/debug-adapter-session.d.ts +0 -19
  288. package/lib/common/debug-adapter-session.d.ts.map +0 -1
  289. package/lib/common/debug-adapter-session.js +0 -79
  290. package/lib/common/debug-adapter-session.js.map +0 -1
  291. package/lib/common/debug-common.d.ts +0 -2
  292. package/lib/common/debug-common.d.ts.map +0 -1
  293. package/lib/common/debug-common.js +0 -21
  294. package/lib/common/debug-common.js.map +0 -1
  295. package/lib/common/debug-compound.d.ts +0 -15
  296. package/lib/common/debug-compound.d.ts.map +0 -1
  297. package/lib/common/debug-compound.js +0 -28
  298. package/lib/common/debug-compound.js.map +0 -1
  299. package/lib/common/debug-configuration.d.ts +0 -77
  300. package/lib/common/debug-configuration.d.ts.map +0 -1
  301. package/lib/common/debug-configuration.js +0 -32
  302. package/lib/common/debug-configuration.js.map +0 -1
  303. package/lib/common/debug-model.d.ts +0 -153
  304. package/lib/common/debug-model.d.ts.map +0 -1
  305. package/lib/common/debug-model.js +0 -36
  306. package/lib/common/debug-model.js.map +0 -1
  307. package/lib/common/debug-preferences.d.ts +0 -18
  308. package/lib/common/debug-preferences.d.ts.map +0 -1
  309. package/lib/common/debug-preferences.js +0 -89
  310. package/lib/common/debug-preferences.js.map +0 -1
  311. package/lib/common/debug-service.d.ts +0 -124
  312. package/lib/common/debug-service.d.ts.map +0 -1
  313. package/lib/common/debug-service.js +0 -67
  314. package/lib/common/debug-service.js.map +0 -1
  315. package/lib/common/debug-uri-utils.d.ts +0 -24
  316. package/lib/common/debug-uri-utils.d.ts.map +0 -1
  317. package/lib/common/debug-uri-utils.js +0 -27
  318. package/lib/common/debug-uri-utils.js.map +0 -1
  319. package/lib/common/inline-debug-adapter.d.ts +0 -19
  320. package/lib/common/inline-debug-adapter.d.ts.map +0 -1
  321. package/lib/common/inline-debug-adapter.js +0 -45
  322. package/lib/common/inline-debug-adapter.js.map +0 -1
  323. package/lib/common/launch-preferences.d.ts +0 -6
  324. package/lib/common/launch-preferences.d.ts.map +0 -1
  325. package/lib/common/launch-preferences.js +0 -37
  326. package/lib/common/launch-preferences.js.map +0 -1
  327. package/lib/node/debug-adapter-factory.d.ts +0 -20
  328. package/lib/node/debug-adapter-factory.d.ts.map +0 -1
  329. package/lib/node/debug-adapter-factory.js +0 -89
  330. package/lib/node/debug-adapter-factory.js.map +0 -1
  331. package/lib/node/debug-adapter-session-manager.d.ts +0 -38
  332. package/lib/node/debug-adapter-session-manager.d.ts.map +0 -1
  333. package/lib/node/debug-adapter-session-manager.js +0 -104
  334. package/lib/node/debug-adapter-session-manager.js.map +0 -1
  335. package/lib/node/debug-backend-module.d.ts +0 -4
  336. package/lib/node/debug-backend-module.d.ts.map +0 -1
  337. package/lib/node/debug-backend-module.js +0 -45
  338. package/lib/node/debug-backend-module.js.map +0 -1
  339. package/lib/node/debug-service-impl.d.ts +0 -31
  340. package/lib/node/debug-service-impl.d.ts.map +0 -1
  341. package/lib/node/debug-service-impl.js +0 -117
  342. package/lib/node/debug-service-impl.js.map +0 -1
  343. package/lib/node/stream-debug-adapter.d.ts +0 -41
  344. package/lib/node/stream-debug-adapter.d.ts.map +0 -1
  345. package/lib/node/stream-debug-adapter.js +0 -113
  346. package/lib/node/stream-debug-adapter.js.map +0 -1
@@ -46,6 +46,7 @@ import { DebugInstructionBreakpoint } from './model/debug-instruction-breakpoint
46
46
  import { nls } from '@theia/core';
47
47
  import { TestService, TestServices } from '@theia/test/lib/browser/test-service';
48
48
  import { DebugSessionManager } from './debug-session-manager';
49
+ import { DebugDataBreakpoint } from './model/debug-data-breakpoint';
49
50
 
50
51
  export enum DebugState {
51
52
  Inactive,
@@ -624,6 +625,14 @@ export class DebugSession implements CompositeTreeElement {
624
625
  return this.breakpoints.getInstructionBreakpoints().map(origin => new DebugInstructionBreakpoint(origin, this.asDebugBreakpointOptions()));
625
626
  }
626
627
 
628
+ getDataBreakpoints(): DebugDataBreakpoint[] {
629
+ if (this.capabilities.supportsDataBreakpoints) {
630
+ return this.getBreakpoints(BreakpointManager.DATA_URI)
631
+ .filter((breakpoint): breakpoint is DebugDataBreakpoint => breakpoint instanceof DebugDataBreakpoint);
632
+ }
633
+ return this.breakpoints.getDataBreakpoints().map(origin => new DebugDataBreakpoint(origin, this.asDebugBreakpointOptions()));
634
+ }
635
+
627
636
  getBreakpoints(uri?: URI): DebugBreakpoint[] {
628
637
  if (uri) {
629
638
  return this._breakpoints.get(uri.toString()) || [];
@@ -730,6 +739,8 @@ export class DebugSession implements CompositeTreeElement {
730
739
  await this.sendFunctionBreakpoints(affectedUri);
731
740
  } else if (affectedUri.toString() === BreakpointManager.INSTRUCTION_URI.toString()) {
732
741
  await this.sendInstructionBreakpoints();
742
+ } else if (affectedUri.isEqual(BreakpointManager.DATA_URI)) {
743
+ await this.sendDataBreakpoints();
733
744
  } else {
734
745
  await this.sendSourceBreakpoints(affectedUri, sourceModified);
735
746
  }
@@ -855,6 +866,25 @@ export class DebugSession implements CompositeTreeElement {
855
866
  this.setBreakpoints(BreakpointManager.INSTRUCTION_URI, all);
856
867
  }
857
868
 
869
+ protected async sendDataBreakpoints(): Promise<void> {
870
+ if (!this.capabilities.supportsDataBreakpoints) { return; }
871
+ const known = this._breakpoints.get(BreakpointManager.DATA_URI.toString());
872
+ const all = this.breakpoints.getDataBreakpoints().map<DebugDataBreakpoint>(bp =>
873
+ known?.find((candidate): candidate is DebugDataBreakpoint => candidate instanceof DebugDataBreakpoint && candidate.id === bp.id)
874
+ ?? new DebugDataBreakpoint(bp, this.asDebugBreakpointOptions())
875
+ );
876
+ const enabled = all.filter(bp => bp.enabled);
877
+ try {
878
+ const response = await this.sendRequest('setDataBreakpoints', {
879
+ breakpoints: enabled.map(({ origin }) => origin.raw)
880
+ });
881
+ response.body.breakpoints.forEach((raw, index) => enabled[index].update({ raw }));
882
+ } catch {
883
+ enabled.forEach(breakpoint => breakpoint.update({ raw: { verified: false } }));
884
+ }
885
+ this.setBreakpoints(BreakpointManager.DATA_URI, all);
886
+ }
887
+
858
888
  protected setBreakpoints(uri: URI, breakpoints: DebugBreakpoint[]): void {
859
889
  this._breakpoints.set(uri.toString(), breakpoints);
860
890
  this.fireDidChangeBreakpoints(uri);
@@ -890,6 +920,7 @@ export class DebugSession implements CompositeTreeElement {
890
920
  }
891
921
  yield BreakpointManager.FUNCTION_URI;
892
922
  yield BreakpointManager.EXCEPTION_URI;
923
+ yield BreakpointManager.DATA_URI;
893
924
  }
894
925
  }
895
926
 
@@ -19,21 +19,66 @@
19
19
  *--------------------------------------------------------------------------------------------*/
20
20
 
21
21
  import { injectable } from '@theia/core/shared/inversify';
22
+ import { ArrayUtils } from '@theia/core';
22
23
  import * as monaco from '@theia/monaco-editor-core';
24
+ import { CancellationToken } from '@theia/monaco-editor-core/esm/vs/base/common/cancellation';
25
+ import { ILanguageFeaturesService } from '@theia/monaco-editor-core/esm/vs/editor/common/services/languageFeatures';
26
+ import { StandaloneServices } from '@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices';
27
+ import { DebugEditor } from './debug-editor';
23
28
 
24
29
  /**
25
30
  * TODO: introduce a new request to LSP to look up an expression range: https://github.com/Microsoft/language-server-protocol/issues/462
26
31
  */
27
32
  @injectable()
28
33
  export class DebugExpressionProvider {
34
+
35
+ async getEvaluatableExpression(
36
+ editor: DebugEditor,
37
+ selection: monaco.IRange
38
+ ): Promise<{ matchingExpression: string; range: monaco.IRange } | undefined> {
39
+
40
+ const pluginExpressionProvider = StandaloneServices.get(ILanguageFeaturesService).evaluatableExpressionProvider;
41
+ const textEditorModel = editor.document.textEditorModel;
42
+
43
+ if (pluginExpressionProvider && pluginExpressionProvider.has(textEditorModel)) {
44
+ const registeredProviders = pluginExpressionProvider.ordered(textEditorModel);
45
+ const position = new monaco.Position(selection.startLineNumber, selection.startColumn);
46
+
47
+ const promises = registeredProviders.map(support =>
48
+ Promise.resolve(support.provideEvaluatableExpression(textEditorModel, position, CancellationToken.None))
49
+ );
50
+
51
+ const results = await Promise.all(promises).then(ArrayUtils.coalesce);
52
+ if (results.length > 0) {
53
+ const range = results[0].range;
54
+ const matchingExpression = results[0].expression || textEditorModel.getValueInRange(range);
55
+ return { matchingExpression, range };
56
+ }
57
+ } else { // use fallback if no provider was registered
58
+ const model = editor.getControl().getModel();
59
+ if (model) {
60
+ const lineContent = model.getLineContent(selection.startLineNumber);
61
+ const { start, end } = this.getExactExpressionStartAndEnd(lineContent, selection.startColumn, selection.endColumn);
62
+ const matchingExpression = lineContent.substring(start - 1, end - 1);
63
+ const range = new monaco.Range(
64
+ selection.startLineNumber,
65
+ start,
66
+ selection.startLineNumber,
67
+ end
68
+ );
69
+ return { matchingExpression, range };
70
+ }
71
+ }
72
+ }
73
+
29
74
  get(model: monaco.editor.IModel, selection: monaco.IRange): string {
30
75
  const lineContent = model.getLineContent(selection.startLineNumber);
31
76
  const { start, end } = this.getExactExpressionStartAndEnd(lineContent, selection.startColumn, selection.endColumn);
32
- return lineContent.substring(start - 1, end);
77
+ return lineContent.substring(start - 1, end - 1);
33
78
  }
34
79
  protected getExactExpressionStartAndEnd(lineContent: string, looseStart: number, looseEnd: number): { start: number, end: number } {
35
80
  let matchingExpression: string | undefined = undefined;
36
- let startOffset = 0;
81
+ let startOffset = 1;
37
82
 
38
83
  // Some example supported expressions: myVar.prop, a.b.c.d, myVar?.prop, myVar->prop, MyClass::StaticProp, *myVar
39
84
  // Match any character except a set of characters which often break interesting sub-expressions
@@ -72,7 +117,7 @@ export class DebugExpressionProvider {
72
117
  }
73
118
 
74
119
  return matchingExpression ?
75
- { start: startOffset, end: startOffset + matchingExpression.length - 1 } :
76
- { start: 0, end: 0 };
120
+ { start: startOffset, end: startOffset + matchingExpression.length } :
121
+ { start: 1, end: 1 };
77
122
  }
78
123
  }
@@ -16,7 +16,7 @@
16
16
 
17
17
  import debounce = require('@theia/core/shared/lodash.debounce');
18
18
 
19
- import { ArrayUtils, MenuPath } from '@theia/core';
19
+ import { MenuPath } from '@theia/core';
20
20
  import { Key } from '@theia/core/lib/browser';
21
21
  import { SourceTreeWidget } from '@theia/core/lib/browser/source-tree';
22
22
  import { Disposable, DisposableCollection } from '@theia/core/lib/common/disposable';
@@ -25,10 +25,7 @@ import { Widget } from '@theia/core/shared/@lumino/widgets';
25
25
  import { Container, inject, injectable, interfaces, postConstruct } from '@theia/core/shared/inversify';
26
26
  import { URI as CodeUri } from '@theia/core/shared/vscode-uri';
27
27
  import * as monaco from '@theia/monaco-editor-core';
28
- import { CancellationTokenSource } from '@theia/monaco-editor-core/esm/vs/base/common/cancellation';
29
28
  import { IEditorHoverOptions } from '@theia/monaco-editor-core/esm/vs/editor/common/config/editorOptions';
30
- import { Position } from '@theia/monaco-editor-core/esm/vs/editor/common/core/position';
31
- import { ILanguageFeaturesService } from '@theia/monaco-editor-core/esm/vs/editor/common/services/languageFeatures';
32
29
  import { StandaloneServices } from '@theia/monaco-editor-core/esm/vs/editor/standalone/browser/standaloneServices';
33
30
  import { IConfigurationService } from '@theia/monaco-editor-core/esm/vs/platform/configuration/common/configuration';
34
31
  import { DebugVariable } from '../console/debug-console-items';
@@ -58,7 +55,6 @@ export function createDebugHoverWidgetContainer(parent: interfaces.Container, ed
58
55
  child.bind(DebugEditor).toConstantValue(editor);
59
56
  child.bind(DebugHoverSource).toSelf();
60
57
  child.unbind(SourceTreeWidget);
61
- child.bind(DebugExpressionProvider).toSelf();
62
58
  child.bind(DebugHoverWidget).toSelf();
63
59
  return child;
64
60
  }
@@ -167,7 +163,6 @@ export class DebugHoverWidget extends SourceTreeWidget implements monaco.editor.
167
163
  }
168
164
 
169
165
  protected async doShow(options: ShowDebugHoverOptions | undefined = this.options): Promise<void> {
170
- const cancellationSource = new CancellationTokenSource();
171
166
 
172
167
  if (!this.isEditorFrame()) {
173
168
  this.hide();
@@ -185,56 +180,16 @@ export class DebugHoverWidget extends SourceTreeWidget implements monaco.editor.
185
180
  }
186
181
 
187
182
  this.options = options;
188
- let matchingExpression: string | undefined;
189
183
 
190
- const pluginExpressionProvider = StandaloneServices.get(ILanguageFeaturesService).evaluatableExpressionProvider;
191
- const textEditorModel = this.editor.document.textEditorModel;
184
+ const result = await this.expressionProvider.getEvaluatableExpression(this.editor, options.selection);
192
185
 
193
- if (pluginExpressionProvider && pluginExpressionProvider.has(textEditorModel)) {
194
- const registeredProviders = pluginExpressionProvider.ordered(textEditorModel);
195
- const position = new Position(this.options!.selection.startLineNumber, this.options!.selection.startColumn);
196
-
197
- const promises = registeredProviders.map(support =>
198
- Promise.resolve(support.provideEvaluatableExpression(textEditorModel, position, cancellationSource.token))
199
- );
200
-
201
- const results = await Promise.all(promises).then(ArrayUtils.coalesce);
202
- if (results.length > 0) {
203
- matchingExpression = results[0].expression;
204
- const range = results[0].range;
205
-
206
- if (!matchingExpression) {
207
- const lineContent = textEditorModel.getLineContent(position.lineNumber);
208
- matchingExpression = lineContent.substring(range.startColumn - 1, range.endColumn - 1);
209
- }
210
- }
211
- } else { // use fallback if no provider was registered
212
- const model = this.editor.getControl().getModel();
213
- if (model) {
214
-
215
- matchingExpression = this.expressionProvider.get(model, options.selection);
216
- if (matchingExpression) {
217
- const expressionLineContent = model.getLineContent(this.options.selection.startLineNumber);
218
- const startColumn =
219
- expressionLineContent.indexOf(
220
- matchingExpression,
221
- this.options.selection.startColumn - matchingExpression.length
222
- ) + 1;
223
- const endColumn = startColumn + matchingExpression.length;
224
- this.options.selection = new monaco.Range(
225
- this.options.selection.startLineNumber,
226
- startColumn,
227
- this.options.selection.startLineNumber,
228
- endColumn
229
- );
230
- }
231
- }
232
- }
233
-
234
- if (!matchingExpression) {
186
+ if (!result?.matchingExpression) {
235
187
  this.hide();
236
188
  return;
237
189
  }
190
+
191
+ this.options.selection = monaco.Range.lift(result.range);
192
+
238
193
  const toFocus = new DisposableCollection();
239
194
  if (this.options.focus === true) {
240
195
  toFocus.push(this.model.onNodeRefreshed(() => {
@@ -242,7 +197,7 @@ export class DebugHoverWidget extends SourceTreeWidget implements monaco.editor.
242
197
  this.activate();
243
198
  }));
244
199
  }
245
- const expression = await this.hoverSource.evaluate(matchingExpression);
200
+ const expression = await this.hoverSource.evaluate(result.matchingExpression);
246
201
  if (!expression) {
247
202
  toFocus.dispose();
248
203
  this.hide();
@@ -0,0 +1,79 @@
1
+ // *****************************************************************************
2
+ // Copyright (C) 2025 EclipseSource GmbH and others.
3
+ //
4
+ // This program and the accompanying materials are made available under the
5
+ // terms of the Eclipse Public License v. 2.0 which is available at
6
+ // http://www.eclipse.org/legal/epl-2.0.
7
+ //
8
+ // This Source Code may also be made available under the following Secondary
9
+ // Licenses when the conditions for such availability set forth in the Eclipse
10
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ // with the GNU Classpath Exception which is available at
12
+ // https://www.gnu.org/software/classpath/license.html.
13
+ //
14
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
15
+ // *****************************************************************************
16
+
17
+ import { nls } from '@theia/core';
18
+ import * as React from '@theia/core/shared/react';
19
+ import { BreakpointManager } from '../breakpoint/breakpoint-manager';
20
+ import { DataBreakpoint } from '../breakpoint/breakpoint-marker';
21
+ import { DebugBreakpoint, DebugBreakpointDecoration, DebugBreakpointOptions } from './debug-breakpoint';
22
+
23
+ export class DebugDataBreakpoint extends DebugBreakpoint<DataBreakpoint> {
24
+ constructor(readonly origin: DataBreakpoint, options: DebugBreakpointOptions) {
25
+ super(BreakpointManager.DATA_URI, options);
26
+ }
27
+
28
+ setEnabled(enabled: boolean): void {
29
+ if (enabled !== this.origin.enabled) {
30
+ this.breakpoints.updateDataBreakpoint(this.origin.id, { enabled });
31
+ }
32
+ }
33
+
34
+ protected override isEnabled(): boolean {
35
+ return super.isEnabled() && this.isSupported();
36
+ }
37
+
38
+ protected isSupported(): boolean {
39
+ return Boolean(this.session?.capabilities.supportsDataBreakpoints);
40
+ }
41
+
42
+ remove(): void {
43
+ this.breakpoints.removeDataBreakpoint(this.origin.id);
44
+ }
45
+
46
+ protected doRender(): React.ReactNode {
47
+ return <span className="line-info theia-data-breakpoint" title={this.origin.info.description}>
48
+ <span className="name">{this.origin.info.description}</span>
49
+ <span className="theia-TreeNodeInfo theia-access-type" >{this.getAccessType()}</span>
50
+ </span>;
51
+ }
52
+
53
+ protected getAccessType(): string {
54
+ switch (this.origin.raw.accessType) {
55
+ case 'read': return 'Read';
56
+ case 'write': return 'Write';
57
+ default: return 'Access';
58
+ }
59
+ }
60
+
61
+ protected getBreakpointDecoration(message?: string[]): DebugBreakpointDecoration {
62
+ if (!this.isSupported()) {
63
+ return {
64
+ className: 'codicon-debug-breakpoint-unsupported',
65
+ message: message ?? [nls.localize('theia/debug/data-breakpoint', 'Data Breakpoint')],
66
+ };
67
+ }
68
+ if (this.origin.raw.condition || this.origin.raw.hitCondition) {
69
+ return {
70
+ className: 'codicon-debug-breakpoint-conditional',
71
+ message: message || [nls.localize('theia/debug/conditionalBreakpoint', 'Conditional Breakpoint')]
72
+ };
73
+ }
74
+ return {
75
+ className: 'codicon-debug-breakpoint-data',
76
+ message: message || [nls.localize('theia/debug/data-breakpoint', 'Data Breakpoint')]
77
+ };
78
+ }
79
+ }
@@ -71,6 +71,10 @@
71
71
  border-radius: 2px;
72
72
  }
73
73
 
74
+ .theia-data-breakpoint .theia-access-type {
75
+ margin-left: var(--theia-ui-padding);
76
+ }
77
+
74
78
  .theia-source-breakpoint > .theia-input {
75
79
  min-height: auto;
76
80
  }
@@ -39,15 +39,9 @@ export class DebugBreakpointsSource extends TreeSource {
39
39
  for (const exceptionBreakpoint of this.breakpoints.getExceptionBreakpoints()) {
40
40
  yield new DebugExceptionBreakpoint(exceptionBreakpoint, this.breakpoints);
41
41
  }
42
- for (const functionBreakpoint of this.model.functionBreakpoints) {
43
- yield functionBreakpoint;
44
- }
45
- for (const instructionBreakpoint of this.model.instructionBreakpoints) {
46
- yield instructionBreakpoint;
47
- }
48
- for (const breakpoint of this.model.breakpoints) {
49
- yield breakpoint;
50
- }
42
+ yield* this.model.dataBreakpoints;
43
+ yield* this.model.functionBreakpoints;
44
+ yield* this.model.instructionBreakpoints;
45
+ yield* this.model.breakpoints;
51
46
  }
52
-
53
47
  }
@@ -122,8 +122,12 @@ export class DebugStackFramesWidget extends SourceTreeWidget {
122
122
  }
123
123
 
124
124
  protected override tapNode(node?: TreeNode): void {
125
- if (TreeElementNode.is(node) && node.element instanceof LoadMoreStackFrames) {
126
- node.element.open();
125
+ if (TreeElementNode.is(node)) {
126
+ if (node.element instanceof LoadMoreStackFrames) {
127
+ node.element.open();
128
+ } else if (node.element instanceof DebugStackFrame) {
129
+ node.element.open({ preview: true });
130
+ }
127
131
  }
128
132
  super.tapNode(node);
129
133
  }
@@ -15,11 +15,16 @@
15
15
  // *****************************************************************************
16
16
 
17
17
  import { injectable, inject, postConstruct, interfaces, Container } from '@theia/core/shared/inversify';
18
- import { MenuPath } from '@theia/core/lib/common';
19
- import { SourceTreeWidget } from '@theia/core/lib/browser/source-tree';
18
+ import { MenuPath, Disposable, CommandRegistry, MenuModelRegistry, DisposableCollection, Command } from '@theia/core/lib/common';
19
+ import { SourceTreeWidget, TreeElementNode } from '@theia/core/lib/browser/source-tree';
20
20
  import { DebugVariablesSource } from './debug-variables-source';
21
21
  import { DebugViewModel } from './debug-view-model';
22
22
  import { nls } from '@theia/core/lib/common/nls';
23
+ import { MouseEvent } from '@theia/core/shared/react';
24
+ import { SelectableTreeNode, TreeNode, TreeSelection } from '@theia/core/lib/browser';
25
+ import { DebugVariable } from '../console/debug-console-items';
26
+ import { BreakpointManager } from '../breakpoint/breakpoint-manager';
27
+ import { DataBreakpoint, DataBreakpointSource, DataBreakpointSourceType } from '../breakpoint/breakpoint-marker';
23
28
 
24
29
  @injectable()
25
30
  export class DebugVariablesWidget extends SourceTreeWidget {
@@ -27,6 +32,7 @@ export class DebugVariablesWidget extends SourceTreeWidget {
27
32
  static CONTEXT_MENU: MenuPath = ['debug-variables-context-menu'];
28
33
  static EDIT_MENU: MenuPath = [...DebugVariablesWidget.CONTEXT_MENU, 'a_edit'];
29
34
  static WATCH_MENU: MenuPath = [...DebugVariablesWidget.CONTEXT_MENU, 'b_watch'];
35
+ static DATA_BREAKPOINT_MENU: MenuPath = [...DebugVariablesWidget.CONTEXT_MENU, 'c_data_breakpoints'];
30
36
  static FACTORY_ID = 'debug:variables';
31
37
  static override createContainer(parent: interfaces.Container): Container {
32
38
  const child = SourceTreeWidget.createContainer(parent, {
@@ -49,6 +55,15 @@ export class DebugVariablesWidget extends SourceTreeWidget {
49
55
  @inject(DebugVariablesSource)
50
56
  protected readonly variables: DebugVariablesSource;
51
57
 
58
+ @inject(CommandRegistry)
59
+ protected readonly commandRegistry: CommandRegistry;
60
+
61
+ @inject(MenuModelRegistry)
62
+ protected readonly menuRegistry: MenuModelRegistry;
63
+
64
+ @inject(BreakpointManager)
65
+ protected readonly breakpointManager: BreakpointManager;
66
+
52
67
  @postConstruct()
53
68
  protected override init(): void {
54
69
  super.init();
@@ -58,4 +73,86 @@ export class DebugVariablesWidget extends SourceTreeWidget {
58
73
  this.source = this.variables;
59
74
  }
60
75
 
76
+ protected override handleContextMenuEvent(node: TreeNode | undefined, event: MouseEvent<HTMLElement>): void {
77
+ this.doHandleContextMenuEvent(node, event);
78
+ }
79
+
80
+ protected async doHandleContextMenuEvent(node: TreeNode | undefined, event: MouseEvent<HTMLElement>): Promise<void> {
81
+ event.stopPropagation();
82
+ event.preventDefault();
83
+ if (!SelectableTreeNode.is(node) || !TreeElementNode.is(node)) { return; }
84
+ // Keep the selection for the context menu, if the widget support multi-selection and the right click happens on an already selected node.
85
+ if (!this.props.multiSelect || !node.selected) {
86
+ const type = !!this.props.multiSelect && this.hasCtrlCmdMask(event) ? TreeSelection.SelectionType.TOGGLE : TreeSelection.SelectionType.DEFAULT;
87
+ this.model.addSelection({ node, type });
88
+ }
89
+ this.focusService.setFocus(node);
90
+ const contextMenuPath = this.props.contextMenuPath;
91
+ if (contextMenuPath) {
92
+ const { x, y } = event.nativeEvent;
93
+ const args = this.toContextMenuArgs(node);
94
+ const target = event.currentTarget;
95
+ const toDisposeOnHide = await this.getVariableCommands(node);
96
+ setTimeout(() => this.contextMenuRenderer.render({
97
+ menuPath: contextMenuPath,
98
+ context: target,
99
+ anchor: { x, y },
100
+ args,
101
+ onHide: () => toDisposeOnHide.dispose()
102
+ }), 10);
103
+ }
104
+ }
105
+
106
+ protected async getVariableCommands(node: TreeElementNode): Promise<Disposable> {
107
+ const selectedElement = node.element;
108
+ const { viewModel: { currentSession } } = this;
109
+ if (!currentSession?.capabilities.supportsDataBreakpoints || !(selectedElement instanceof DebugVariable)) {
110
+ return Disposable.NULL;
111
+ }
112
+ const { name, parent: { reference } } = selectedElement;
113
+ const dataBreakpointInfo = (await currentSession.sendRequest('dataBreakpointInfo', { name, variablesReference: reference })).body;
114
+ // eslint-disable-next-line no-null/no-null
115
+ if (dataBreakpointInfo.dataId === null) {
116
+ return Disposable.NULL;
117
+ }
118
+ const source: DataBreakpointSource = { type: DataBreakpointSourceType.Variable, variable: name };
119
+ return new DisposableCollection(
120
+ this.commandRegistry.registerCommand(Command.toDefaultLocalizedCommand({
121
+ id: `break-on-access:${currentSession.id}:${name}`,
122
+ label: 'Break on Value Access'
123
+ }), {
124
+ execute: () => this.breakpointManager.addDataBreakpoint(DataBreakpoint.create(
125
+ { accessType: 'readWrite', dataId: dataBreakpointInfo.dataId! },
126
+ dataBreakpointInfo,
127
+ source
128
+ )),
129
+ isEnabled: () => !!dataBreakpointInfo.accessTypes?.includes('readWrite'),
130
+ }),
131
+ this.menuRegistry.registerMenuAction(DebugVariablesWidget.DATA_BREAKPOINT_MENU, { commandId: `break-on-access:${currentSession.id}:${name}`, order: 'c' }),
132
+ this.commandRegistry.registerCommand(Command.toDefaultLocalizedCommand({
133
+ id: `break-on-read:${currentSession.id}:${name}`,
134
+ label: 'Break on Value Read'
135
+ }), {
136
+ execute: () => this.breakpointManager.addDataBreakpoint(DataBreakpoint.create(
137
+ { accessType: 'read', dataId: dataBreakpointInfo.dataId! },
138
+ dataBreakpointInfo,
139
+ source
140
+ )),
141
+ isEnabled: () => !!dataBreakpointInfo.accessTypes?.includes('read'),
142
+ }),
143
+ this.menuRegistry.registerMenuAction(DebugVariablesWidget.DATA_BREAKPOINT_MENU, { commandId: `break-on-read:${currentSession.id}:${name}`, order: 'a' }),
144
+ this.commandRegistry.registerCommand(Command.toDefaultLocalizedCommand({
145
+ id: `break-on-write:${currentSession.id}:${name}`,
146
+ label: 'Break on Value Change'
147
+ }), {
148
+ execute: () => this.breakpointManager.addDataBreakpoint(DataBreakpoint.create(
149
+ { accessType: 'write', dataId: dataBreakpointInfo.dataId! },
150
+ dataBreakpointInfo,
151
+ source
152
+ )),
153
+ isEnabled: () => !!dataBreakpointInfo.accessTypes?.includes('write'),
154
+ }),
155
+ this.menuRegistry.registerMenuAction(DebugVariablesWidget.DATA_BREAKPOINT_MENU, { commandId: `break-on-write:${currentSession.id}:${name}`, order: 'b' }),
156
+ );
157
+ }
61
158
  }
@@ -28,6 +28,7 @@ import { DebugWatchManager } from '../debug-watch-manager';
28
28
  import { DebugFunctionBreakpoint } from '../model/debug-function-breakpoint';
29
29
  import { DebugInstructionBreakpoint } from '../model/debug-instruction-breakpoint';
30
30
  import { DebugSessionOptionsBase } from '../debug-session-options';
31
+ import { DebugDataBreakpoint } from '../model/debug-data-breakpoint';
31
32
 
32
33
  @injectable()
33
34
  export class DebugViewModel implements Disposable {
@@ -137,6 +138,10 @@ export class DebugViewModel implements Disposable {
137
138
  return this.manager.getInstructionBreakpoints(this.currentSession);
138
139
  }
139
140
 
141
+ get dataBreakpoints(): DebugDataBreakpoint[] {
142
+ return this.manager.getDataBreakpoints(this.currentSession);
143
+ }
144
+
140
145
  async start(options: Partial<Pick<DebugSessionOptionsBase, 'startedByUser'>> = {}): Promise<void> {
141
146
  const { session } = this;
142
147
  if (!session) {
@@ -1,71 +0,0 @@
1
- import { Emitter } from '@theia/core/lib/common';
2
- import { StorageService } from '@theia/core/lib/browser';
3
- import { Marker } from '@theia/markers/lib/common/marker';
4
- import { MarkerManager } from '@theia/markers/lib/browser/marker-manager';
5
- import URI from '@theia/core/lib/common/uri';
6
- import { SourceBreakpoint, ExceptionBreakpoint, FunctionBreakpoint, BaseBreakpoint, InstructionBreakpoint } from './breakpoint-marker';
7
- export interface BreakpointsChangeEvent<T extends BaseBreakpoint> {
8
- uri: URI;
9
- added: T[];
10
- removed: T[];
11
- changed: T[];
12
- }
13
- export type SourceBreakpointsChangeEvent = BreakpointsChangeEvent<SourceBreakpoint>;
14
- export type FunctionBreakpointsChangeEvent = BreakpointsChangeEvent<FunctionBreakpoint>;
15
- export type InstructionBreakpointsChangeEvent = BreakpointsChangeEvent<InstructionBreakpoint>;
16
- export declare class BreakpointManager extends MarkerManager<SourceBreakpoint> {
17
- static EXCEPTION_URI: URI;
18
- static FUNCTION_URI: URI;
19
- static INSTRUCTION_URI: URI;
20
- protected readonly owner = "breakpoint";
21
- protected readonly storage: StorageService;
22
- getKind(): string;
23
- protected readonly onDidChangeBreakpointsEmitter: Emitter<SourceBreakpointsChangeEvent>;
24
- readonly onDidChangeBreakpoints: import("@theia/core/lib/common").Event<SourceBreakpointsChangeEvent>;
25
- protected readonly onDidChangeFunctionBreakpointsEmitter: Emitter<FunctionBreakpointsChangeEvent>;
26
- readonly onDidChangeFunctionBreakpoints: import("@theia/core/lib/common").Event<FunctionBreakpointsChangeEvent>;
27
- protected readonly onDidChangeInstructionBreakpointsEmitter: Emitter<InstructionBreakpointsChangeEvent>;
28
- readonly onDidChangeInstructionBreakpoints: import("@theia/core/lib/common").Event<InstructionBreakpointsChangeEvent>;
29
- setMarkers(uri: URI, owner: string, newMarkers: SourceBreakpoint[]): Marker<SourceBreakpoint>[];
30
- getLineBreakpoints(uri: URI, line: number): SourceBreakpoint[];
31
- getInlineBreakpoint(uri: URI, line: number, column: number): SourceBreakpoint | undefined;
32
- getBreakpoints(uri?: URI): SourceBreakpoint[];
33
- setBreakpoints(uri: URI, breakpoints: SourceBreakpoint[]): void;
34
- addBreakpoint(breakpoint: SourceBreakpoint): boolean;
35
- enableAllBreakpoints(enabled: boolean): void;
36
- protected _breakpointsEnabled: boolean;
37
- get breakpointsEnabled(): boolean;
38
- set breakpointsEnabled(breakpointsEnabled: boolean);
39
- protected readonly exceptionBreakpoints: Map<string, ExceptionBreakpoint>;
40
- getExceptionBreakpoint(filter: string): ExceptionBreakpoint | undefined;
41
- getExceptionBreakpoints(): IterableIterator<ExceptionBreakpoint>;
42
- setExceptionBreakpoints(exceptionBreakpoints: ExceptionBreakpoint[]): void;
43
- toggleExceptionBreakpoint(filter: string): void;
44
- updateExceptionBreakpoint(filter: string, options: Partial<Pick<ExceptionBreakpoint, 'condition' | 'enabled'>>): void;
45
- protected functionBreakpoints: FunctionBreakpoint[];
46
- getFunctionBreakpoints(): FunctionBreakpoint[];
47
- setFunctionBreakpoints(functionBreakpoints: FunctionBreakpoint[]): void;
48
- protected instructionBreakpoints: InstructionBreakpoint[];
49
- getInstructionBreakpoints(): ReadonlyArray<InstructionBreakpoint>;
50
- hasBreakpoints(): boolean;
51
- protected setInstructionBreakpoints(newBreakpoints: InstructionBreakpoint[]): void;
52
- addInstructionBreakpoint(address: string, offset: number, condition?: string, hitCondition?: string): void;
53
- updateInstructionBreakpoint(id: string, options: Partial<Pick<InstructionBreakpoint, 'condition' | 'hitCondition' | 'enabled'>>): void;
54
- removeInstructionBreakpoint(address?: string): void;
55
- clearInstructionBreakpoints(): void;
56
- removeBreakpoints(): void;
57
- load(): Promise<void>;
58
- save(): void;
59
- }
60
- export declare namespace BreakpointManager {
61
- interface Data {
62
- breakpointsEnabled: boolean;
63
- breakpoints: {
64
- [uri: string]: SourceBreakpoint[];
65
- };
66
- exceptionBreakpoints?: ExceptionBreakpoint[];
67
- functionBreakpoints?: FunctionBreakpoint[];
68
- instructionBreakpoints?: InstructionBreakpoint[];
69
- }
70
- }
71
- //# sourceMappingURL=breakpoint-manager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"breakpoint-manager.d.ts","sourceRoot":"","sources":["../../../src/browser/breakpoint/breakpoint-manager.ts"],"names":[],"mappings":"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"}