@theia/debug 1.68.0-next.9 → 1.68.0

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 (151) hide show
  1. package/lib/browser/breakpoint/breakpoint-manager.js +10 -10
  2. package/lib/browser/breakpoint/breakpoint-manager.js.map +1 -1
  3. package/lib/browser/breakpoint/breakpoint-marker.js +4 -6
  4. package/lib/browser/breakpoint/breakpoint-marker.js.map +1 -1
  5. package/lib/browser/breakpoint/debug-data-breakpoint-actions.js +7 -10
  6. package/lib/browser/breakpoint/debug-data-breakpoint-actions.js.map +1 -1
  7. package/lib/browser/console/debug-console-contribution.d.ts +16 -4
  8. package/lib/browser/console/debug-console-contribution.d.ts.map +1 -1
  9. package/lib/browser/console/debug-console-contribution.js +158 -44
  10. package/lib/browser/console/debug-console-contribution.js.map +1 -1
  11. package/lib/browser/console/debug-console-items.d.ts +0 -1
  12. package/lib/browser/console/debug-console-items.d.ts.map +1 -1
  13. package/lib/browser/console/debug-console-items.js +11 -16
  14. package/lib/browser/console/debug-console-items.js.map +1 -1
  15. package/lib/browser/console/debug-console-session.d.ts +9 -1
  16. package/lib/browser/console/debug-console-session.d.ts.map +1 -1
  17. package/lib/browser/console/debug-console-session.js +59 -4
  18. package/lib/browser/console/debug-console-session.js.map +1 -1
  19. package/lib/browser/debug-commands.js +3 -3
  20. package/lib/browser/debug-commands.js.map +1 -1
  21. package/lib/browser/debug-configuration-manager.js +8 -14
  22. package/lib/browser/debug-configuration-manager.js.map +1 -1
  23. package/lib/browser/debug-frontend-application-contribution.js +17 -21
  24. package/lib/browser/debug-frontend-application-contribution.js.map +1 -1
  25. package/lib/browser/debug-prefix-configuration.js +4 -4
  26. package/lib/browser/debug-prefix-configuration.js.map +1 -1
  27. package/lib/browser/debug-session-manager.js +4 -5
  28. package/lib/browser/debug-session-manager.js.map +1 -1
  29. package/lib/browser/debug-session-options.js +1 -2
  30. package/lib/browser/debug-session-options.js.map +1 -1
  31. package/lib/browser/debug-session.d.ts +0 -1
  32. package/lib/browser/debug-session.d.ts.map +1 -1
  33. package/lib/browser/debug-session.js +13 -19
  34. package/lib/browser/debug-session.js.map +1 -1
  35. package/lib/browser/disassembly-view/disassembly-view-breakpoint-renderer.js +7 -10
  36. package/lib/browser/disassembly-view/disassembly-view-breakpoint-renderer.js.map +1 -1
  37. package/lib/browser/disassembly-view/disassembly-view-contribution.js +7 -8
  38. package/lib/browser/disassembly-view/disassembly-view-contribution.js.map +1 -1
  39. package/lib/browser/disassembly-view/disassembly-view-instruction-renderer.js +16 -18
  40. package/lib/browser/disassembly-view/disassembly-view-instruction-renderer.js.map +1 -1
  41. package/lib/browser/disassembly-view/disassembly-view-table-delegate.js +1 -2
  42. package/lib/browser/disassembly-view/disassembly-view-table-delegate.js.map +1 -1
  43. package/lib/browser/disassembly-view/disassembly-view-widget.d.ts.map +1 -1
  44. package/lib/browser/disassembly-view/disassembly-view-widget.js +29 -34
  45. package/lib/browser/disassembly-view/disassembly-view-widget.js.map +1 -1
  46. package/lib/browser/editor/debug-breakpoint-widget.d.ts.map +1 -1
  47. package/lib/browser/editor/debug-breakpoint-widget.js +5 -5
  48. package/lib/browser/editor/debug-breakpoint-widget.js.map +1 -1
  49. package/lib/browser/editor/debug-editor-model.d.ts.map +1 -1
  50. package/lib/browser/editor/debug-editor-model.js +36 -39
  51. package/lib/browser/editor/debug-editor-model.js.map +1 -1
  52. package/lib/browser/editor/debug-editor-service.js +1 -2
  53. package/lib/browser/editor/debug-editor-service.js.map +1 -1
  54. package/lib/browser/editor/debug-hover-source.d.ts +0 -1
  55. package/lib/browser/editor/debug-hover-source.d.ts.map +1 -1
  56. package/lib/browser/editor/debug-hover-widget.d.ts +0 -1
  57. package/lib/browser/editor/debug-hover-widget.d.ts.map +1 -1
  58. package/lib/browser/editor/debug-hover-widget.js +10 -9
  59. package/lib/browser/editor/debug-hover-widget.js.map +1 -1
  60. package/lib/browser/editor/debug-inline-value-decorator.d.ts.map +1 -1
  61. package/lib/browser/editor/debug-inline-value-decorator.js +6 -3
  62. package/lib/browser/editor/debug-inline-value-decorator.js.map +1 -1
  63. package/lib/browser/model/debug-breakpoint.d.ts +0 -1
  64. package/lib/browser/model/debug-breakpoint.d.ts.map +1 -1
  65. package/lib/browser/model/debug-breakpoint.js +1 -2
  66. package/lib/browser/model/debug-breakpoint.js.map +1 -1
  67. package/lib/browser/model/debug-data-breakpoint.d.ts +0 -1
  68. package/lib/browser/model/debug-data-breakpoint.d.ts.map +1 -1
  69. package/lib/browser/model/debug-data-breakpoint.js +2 -3
  70. package/lib/browser/model/debug-data-breakpoint.js.map +1 -1
  71. package/lib/browser/model/debug-function-breakpoint.d.ts +0 -1
  72. package/lib/browser/model/debug-function-breakpoint.d.ts.map +1 -1
  73. package/lib/browser/model/debug-instruction-breakpoint.d.ts +0 -1
  74. package/lib/browser/model/debug-instruction-breakpoint.d.ts.map +1 -1
  75. package/lib/browser/model/debug-instruction-breakpoint.js +2 -3
  76. package/lib/browser/model/debug-instruction-breakpoint.js.map +1 -1
  77. package/lib/browser/model/debug-source-breakpoint.d.ts +0 -1
  78. package/lib/browser/model/debug-source-breakpoint.d.ts.map +1 -1
  79. package/lib/browser/model/debug-source-breakpoint.js +3 -1
  80. package/lib/browser/model/debug-source-breakpoint.js.map +1 -1
  81. package/lib/browser/model/debug-source.js +2 -2
  82. package/lib/browser/model/debug-source.js.map +1 -1
  83. package/lib/browser/model/debug-stack-frame.d.ts +0 -1
  84. package/lib/browser/model/debug-stack-frame.d.ts.map +1 -1
  85. package/lib/browser/model/debug-thread.d.ts +0 -1
  86. package/lib/browser/model/debug-thread.d.ts.map +1 -1
  87. package/lib/browser/model/debug-thread.js +3 -5
  88. package/lib/browser/model/debug-thread.js.map +1 -1
  89. package/lib/browser/view/debug-action.d.ts +0 -1
  90. package/lib/browser/view/debug-action.d.ts.map +1 -1
  91. package/lib/browser/view/debug-breakpoints-widget.d.ts +0 -1
  92. package/lib/browser/view/debug-breakpoints-widget.d.ts.map +1 -1
  93. package/lib/browser/view/debug-breakpoints-widget.js +7 -6
  94. package/lib/browser/view/debug-breakpoints-widget.js.map +1 -1
  95. package/lib/browser/view/debug-configuration-select.d.ts +0 -1
  96. package/lib/browser/view/debug-configuration-select.d.ts.map +1 -1
  97. package/lib/browser/view/debug-configuration-select.js +6 -7
  98. package/lib/browser/view/debug-configuration-select.js.map +1 -1
  99. package/lib/browser/view/debug-configuration-widget.d.ts +0 -1
  100. package/lib/browser/view/debug-configuration-widget.d.ts.map +1 -1
  101. package/lib/browser/view/debug-exception-breakpoint.d.ts +0 -1
  102. package/lib/browser/view/debug-exception-breakpoint.d.ts.map +1 -1
  103. package/lib/browser/view/debug-exception-breakpoint.js +1 -2
  104. package/lib/browser/view/debug-exception-breakpoint.js.map +1 -1
  105. package/lib/browser/view/debug-session-widget.js +3 -2
  106. package/lib/browser/view/debug-session-widget.js.map +1 -1
  107. package/lib/browser/view/debug-stack-frames-source.d.ts +0 -1
  108. package/lib/browser/view/debug-stack-frames-source.d.ts.map +1 -1
  109. package/lib/browser/view/debug-stack-frames-widget.d.ts +0 -1
  110. package/lib/browser/view/debug-stack-frames-widget.d.ts.map +1 -1
  111. package/lib/browser/view/debug-stack-frames-widget.js +4 -3
  112. package/lib/browser/view/debug-stack-frames-widget.js.map +1 -1
  113. package/lib/browser/view/debug-threads-widget.d.ts +0 -1
  114. package/lib/browser/view/debug-threads-widget.d.ts.map +1 -1
  115. package/lib/browser/view/debug-threads-widget.js +7 -6
  116. package/lib/browser/view/debug-threads-widget.js.map +1 -1
  117. package/lib/browser/view/debug-toolbar-widget.d.ts +0 -1
  118. package/lib/browser/view/debug-toolbar-widget.d.ts.map +1 -1
  119. package/lib/browser/view/debug-toolbar-widget.js +4 -3
  120. package/lib/browser/view/debug-toolbar-widget.js.map +1 -1
  121. package/lib/browser/view/debug-variables-widget.d.ts +0 -1
  122. package/lib/browser/view/debug-variables-widget.d.ts.map +1 -1
  123. package/lib/browser/view/debug-variables-widget.js +11 -10
  124. package/lib/browser/view/debug-variables-widget.js.map +1 -1
  125. package/lib/browser/view/debug-watch-expression.d.ts +0 -1
  126. package/lib/browser/view/debug-watch-expression.d.ts.map +1 -1
  127. package/lib/browser/view/debug-watch-widget.js +6 -5
  128. package/lib/browser/view/debug-watch-widget.js.map +1 -1
  129. package/lib/browser/view/debug-widget.js +4 -3
  130. package/lib/browser/view/debug-widget.js.map +1 -1
  131. package/lib/common/debug-adapter-session.js +1 -2
  132. package/lib/common/debug-adapter-session.js.map +1 -1
  133. package/lib/common/debug-preferences.js +7 -7
  134. package/lib/common/debug-preferences.js.map +1 -1
  135. package/lib/common/debug-service.js +1 -1
  136. package/lib/common/debug-service.js.map +1 -1
  137. package/lib/common/launch-preferences.js +2 -2
  138. package/lib/common/launch-preferences.js.map +1 -1
  139. package/lib/node/stream-debug-adapter.d.ts +0 -5
  140. package/lib/node/stream-debug-adapter.d.ts.map +1 -1
  141. package/lib/node/stream-debug-adapter.js +4 -5
  142. package/lib/node/stream-debug-adapter.js.map +1 -1
  143. package/package.json +16 -16
  144. package/src/browser/console/debug-console-contribution.tsx +194 -38
  145. package/src/browser/console/debug-console-session.ts +65 -1
  146. package/src/browser/disassembly-view/disassembly-view-widget.ts +6 -3
  147. package/src/browser/editor/debug-editor-model.ts +1 -0
  148. package/src/browser/editor/debug-inline-value-decorator.ts +6 -3
  149. package/src/browser/model/debug-source-breakpoint.tsx +3 -1
  150. package/src/browser/style/debug.css +28 -0
  151. package/src/common/debug-preferences.ts +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"stream-debug-adapter.js","sourceRoot":"","sources":["../../src/node/stream-debug-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stream-debug-adapter.js","sourceRoot":"","sources":["../../src/node/stream-debug-adapter.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,kEAAyE;AACzE,wDAA8D;AAM9D,MAAe,kBAAmB,SAAQ,iCAAoB;IAQ1D,2HAA2H;aAC5G,aAAQ,GAAG,UAAU,AAAb,CAAc;aACtB,mBAAc,GAAG,gBAAgB,AAAnB,CAAoB;IAIjD,YAAoB,WAA4B,EAAU,SAA0B;QAChF,KAAK,EAAE,CAAC;QADQ,gBAAW,GAAX,WAAW,CAAiB;QAAU,cAAS,GAAT,SAAS,CAAiB;QAb5E,2BAAsB,GAAG,IAAI,eAAO,EAAU,CAAC;QACvD,sBAAiB,GAAkB,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC;QAC7D,iBAAY,GAAG,IAAI,eAAO,EAAS,CAAC;QAC5C,YAAO,GAAiB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QACxC,iBAAY,GAAG,IAAI,eAAO,EAAQ,CAAC;QAC3C,YAAO,GAAgB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAKvC,kBAAa,GAAW,CAAC,CAAC,CAAC;QAC3B,WAAM,GAAW,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAKrC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,gCAAgC;QACzF,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,YAAY;QACR,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,CAAC,OAAe;QAChB,MAAM,GAAG,GAAG,GAAG,kBAAkB,CAAC,cAAc,KAAK,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,kBAAkB,CAAC,QAAQ,GAAG,OAAO,EAAE,CAAC;QAElI,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAES,UAAU,CAAC,IAAY;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;QAEjD,OAAO,IAAI,EAAE,CAAC;YACV,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;oBAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBACpD,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;oBAExB,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACrB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC9C,CAAC;oBACD,SAAS,CAAC,iDAAiD;gBAC/D,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBACjE,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACV,0BAA0B;oBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;oBAEtC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACzC,CAAC;gBAED,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;gBACvD,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;oBACpD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACnC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,kBAAkB,CAAC,cAAc,EAAE,CAAC;4BAChD,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;wBAClC,CAAC;oBACL,CAAC;oBACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1E,SAAS;gBACb,CAAC;YACL,CAAC;YACD,MAAM;QACV,CAAC;IACL,CAAC;;AAGL,MAAa,mBAAoB,SAAQ,kBAAkB;IAEvD,YAAY,OAAqB;QAC7B,KAAK,CAAC,OAAO,CAAC,MAAO,EAAE,OAAO,CAAC,KAAM,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI;QACN,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC;IAC9B,CAAC;CACJ;AAXD,kDAWC;AAED,MAAa,kBAAmB,SAAQ,kBAAkB;IAEtD,YAAY,MAAkB;QAC1B,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,IAAI;QACA,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AAZD,gDAYC"}
package/package.json CHANGED
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@theia/debug",
3
- "version": "1.68.0-next.9+da2eb8707",
3
+ "version": "1.68.0",
4
4
  "description": "Theia - Debug Extension",
5
5
  "dependencies": {
6
- "@theia/console": "1.68.0-next.9+da2eb8707",
7
- "@theia/core": "1.68.0-next.9+da2eb8707",
8
- "@theia/editor": "1.68.0-next.9+da2eb8707",
9
- "@theia/filesystem": "1.68.0-next.9+da2eb8707",
10
- "@theia/markers": "1.68.0-next.9+da2eb8707",
11
- "@theia/monaco": "1.68.0-next.9+da2eb8707",
6
+ "@theia/console": "1.68.0",
7
+ "@theia/core": "1.68.0",
8
+ "@theia/editor": "1.68.0",
9
+ "@theia/filesystem": "1.68.0",
10
+ "@theia/markers": "1.68.0",
11
+ "@theia/monaco": "1.68.0",
12
12
  "@theia/monaco-editor-core": "1.96.302",
13
- "@theia/output": "1.68.0-next.9+da2eb8707",
14
- "@theia/process": "1.68.0-next.9+da2eb8707",
15
- "@theia/task": "1.68.0-next.9+da2eb8707",
16
- "@theia/terminal": "1.68.0-next.9+da2eb8707",
17
- "@theia/test": "1.68.0-next.9+da2eb8707",
18
- "@theia/variable-resolver": "1.68.0-next.9+da2eb8707",
19
- "@theia/workspace": "1.68.0-next.9+da2eb8707",
13
+ "@theia/output": "1.68.0",
14
+ "@theia/process": "1.68.0",
15
+ "@theia/task": "1.68.0",
16
+ "@theia/terminal": "1.68.0",
17
+ "@theia/test": "1.68.0",
18
+ "@theia/variable-resolver": "1.68.0",
19
+ "@theia/workspace": "1.68.0",
20
20
  "@vscode/debugprotocol": "^1.51.0",
21
21
  "fast-deep-equal": "^3.1.3",
22
22
  "jsonc-parser": "^2.2.0",
@@ -59,10 +59,10 @@
59
59
  "watch": "theiaext watch"
60
60
  },
61
61
  "devDependencies": {
62
- "@theia/ext-scripts": "1.67.0"
62
+ "@theia/ext-scripts": "1.68.0"
63
63
  },
64
64
  "nyc": {
65
65
  "extends": "../../configs/nyc.json"
66
66
  },
67
- "gitHead": "da2eb87074d90bd79cfa76c868cceb00e7bc2b47"
67
+ "gitHead": "d844a76de68367f16a726f1eae0c2032ecb85f63"
68
68
  }
@@ -17,7 +17,7 @@ import '../../../src/browser/style/debug.css';
17
17
 
18
18
  import { ConsoleSessionManager } from '@theia/console/lib/browser/console-session-manager';
19
19
  import { ConsoleOptions, ConsoleWidget } from '@theia/console/lib/browser/console-widget';
20
- import { AbstractViewContribution, bindViewContribution, codicon, Widget, WidgetFactory } from '@theia/core/lib/browser';
20
+ import { AbstractViewContribution, bindViewContribution, codicon, HoverService, Widget, WidgetFactory } from '@theia/core/lib/browser';
21
21
  import { ContextKey, ContextKeyService } from '@theia/core/lib/browser/context-key-service';
22
22
  import { nls } from '@theia/core/lib/common/nls';
23
23
  import { TabBarToolbarContribution, TabBarToolbarRegistry } from '@theia/core/lib/browser/shell/tab-bar-toolbar';
@@ -29,7 +29,9 @@ import { SelectComponent, SelectOption } from '@theia/core/lib/browser/widgets/s
29
29
  import { DebugSession } from '../debug-session';
30
30
  import { DebugSessionManager, DidChangeActiveDebugSession } from '../debug-session-manager';
31
31
  import { DebugConsoleSession, DebugConsoleSessionFactory } from './debug-console-session';
32
- import { InMemoryResources } from '@theia/core';
32
+ import { Disposable, DisposableCollection, Emitter, Event, InMemoryResources } from '@theia/core';
33
+ import { MarkdownStringImpl } from '@theia/core/lib/common/markdown-rendering';
34
+ import debounce = require('@theia/core/shared/lodash.debounce');
33
35
 
34
36
  export type InDebugReplContextKey = ContextKey<boolean>;
35
37
  export const InDebugReplContextKey = Symbol('inDebugReplContextKey');
@@ -47,7 +49,7 @@ export namespace DebugConsoleCommands {
47
49
  }
48
50
 
49
51
  @injectable()
50
- export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWidget> implements TabBarToolbarContribution {
52
+ export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWidget> implements TabBarToolbarContribution, Disposable {
51
53
 
52
54
  @inject(ConsoleSessionManager)
53
55
  protected consoleSessionManager: ConsoleSessionManager;
@@ -61,8 +63,16 @@ export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWi
61
63
  @inject(InMemoryResources)
62
64
  protected readonly resources: InMemoryResources;
63
65
 
66
+ @inject(HoverService)
67
+ protected readonly hoverService: HoverService;
68
+
64
69
  protected readonly DEBUG_CONSOLE_SEVERITY_ID = 'debugConsoleSeverity';
65
70
 
71
+ protected filterInputRef: HTMLInputElement | undefined;
72
+ protected currentFilterValue = '';
73
+ protected readonly filterChangedEmitter = new Emitter<void>();
74
+ protected readonly toDispose = new DisposableCollection();
75
+
66
76
  constructor() {
67
77
  super({
68
78
  widgetId: DebugConsoleContribution.options.id,
@@ -78,28 +88,42 @@ export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWi
78
88
  @postConstruct()
79
89
  protected init(): void {
80
90
  this.resources.add(DebugConsoleSession.uri, '');
81
- this.debugSessionManager.onDidCreateDebugSession(session => {
82
- const consoleParent = session.findConsoleParent();
83
- if (consoleParent) {
84
- const parentConsoleSession = this.consoleSessionManager.get(consoleParent.id);
85
- if (parentConsoleSession instanceof DebugConsoleSession) {
86
- session.on('output', event => parentConsoleSession.logOutput(parentConsoleSession.debugSession, event));
91
+ this.toDispose.pushAll([
92
+ this.debugSessionManager.onDidCreateDebugSession(session => {
93
+ const consoleParent = session.findConsoleParent();
94
+ if (consoleParent) {
95
+ const parentConsoleSession = this.consoleSessionManager.get(consoleParent.id);
96
+ if (parentConsoleSession instanceof DebugConsoleSession) {
97
+ session.on('output', event => parentConsoleSession.logOutput(parentConsoleSession.debugSession, event));
98
+ }
99
+ } else {
100
+ const consoleSession = this.debugConsoleSessionFactory(session);
101
+ this.consoleSessionManager.add(consoleSession);
102
+ session.on('output', event => consoleSession.logOutput(session, event));
87
103
  }
88
- } else {
89
- const consoleSession = this.debugConsoleSessionFactory(session);
90
- this.consoleSessionManager.add(consoleSession);
91
- session.on('output', event => consoleSession.logOutput(session, event));
92
- }
93
- });
94
- this.debugSessionManager.onDidChangeActiveDebugSession(event => this.handleActiveDebugSessionChanged(event));
95
- this.debugSessionManager.onDidDestroyDebugSession(session => {
96
- this.consoleSessionManager.delete(session.id);
97
- });
104
+ }),
105
+ this.debugSessionManager.onDidChangeActiveDebugSession(event => this.handleActiveDebugSessionChanged(event)),
106
+ this.debugSessionManager.onDidDestroyDebugSession(session => {
107
+ const consoleSession = this.consoleSessionManager.get(session.id);
108
+ if (consoleSession instanceof DebugConsoleSession) {
109
+ consoleSession.markTerminated();
110
+ }
111
+ }),
112
+ this.consoleSessionManager.onDidChangeSelectedSession(() => {
113
+ const session = this.consoleSessionManager.selectedSession;
114
+ if (session && this.filterInputRef) {
115
+ const filterValue = session.filterText || '';
116
+ this.filterInputRef.value = filterValue;
117
+ this.currentFilterValue = filterValue;
118
+ this.filterChangedEmitter.fire();
119
+ }
120
+ })
121
+ ]);
98
122
  }
99
123
 
100
124
  protected handleActiveDebugSessionChanged(event: DidChangeActiveDebugSession): void {
101
125
  if (!event.current) {
102
- this.consoleSessionManager.selectedSession = undefined;
126
+ return;
103
127
  } else {
104
128
  const topSession = event.current.findConsoleParent() || event.current;
105
129
  const consoleSession = topSession ? this.consoleSessionManager.get(topSession.id) : undefined;
@@ -127,13 +151,28 @@ export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWi
127
151
  id: 'debug-console-severity',
128
152
  render: widget => this.renderSeveritySelector(widget),
129
153
  isVisible: widget => this.withWidget(widget, () => true),
130
- onDidChange: this.consoleSessionManager.onDidChangeSeverity
154
+ onDidChange: this.consoleSessionManager.onDidChangeSeverity,
155
+ priority: -3,
156
+ });
157
+
158
+ toolbarRegistry.registerItem({
159
+ id: 'debug-console-filter',
160
+ render: () => this.renderFilterInput(),
161
+ isVisible: widget => this.withWidget(widget, () => true),
162
+ onDidChange: this.filterChangedEmitter.event,
163
+ priority: -2,
131
164
  });
132
165
 
133
166
  toolbarRegistry.registerItem({
134
167
  id: 'debug-console-session-selector',
135
168
  render: widget => this.renderDebugConsoleSelector(widget),
136
- isVisible: widget => this.withWidget(widget, () => this.consoleSessionManager.all.length > 1)
169
+ isVisible: widget => this.withWidget(widget, () => this.consoleSessionManager.all.length >= 1),
170
+ onDidChange: Event.any(
171
+ this.consoleSessionManager.onDidAddSession,
172
+ this.consoleSessionManager.onDidDeleteSession,
173
+ this.consoleSessionManager.onDidChangeSelectedSession
174
+ ) as Event<void>,
175
+ priority: -1,
137
176
  });
138
177
 
139
178
  toolbarRegistry.registerItem({
@@ -196,33 +235,142 @@ export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWi
196
235
  label: Severity.toLocaleString(e)
197
236
  }));
198
237
 
199
- return <SelectComponent
200
- id={this.DEBUG_CONSOLE_SEVERITY_ID}
201
- key="debugConsoleSeverity"
202
- options={severityElements}
203
- defaultValue={this.consoleSessionManager.severity || Severity.Ignore}
204
- onChange={this.changeSeverity}
205
- />;
238
+ return <div onMouseEnter={this.handleSeverityMouseEnter}>
239
+ <SelectComponent
240
+ id={this.DEBUG_CONSOLE_SEVERITY_ID}
241
+ key="debugConsoleSeverity"
242
+ options={severityElements}
243
+ defaultValue={this.consoleSessionManager.severity || Severity.Ignore}
244
+ onChange={this.changeSeverity}
245
+ />
246
+ </div>;
206
247
  }
207
248
 
249
+ protected handleSeverityMouseEnter = (e: React.MouseEvent<HTMLDivElement>): void => {
250
+ const tooltipContent = new MarkdownStringImpl();
251
+ tooltipContent.appendMarkdown(nls.localize(
252
+ 'theia/debug/consoleSeverityTooltip',
253
+ 'Filter console output by severity level. Only messages with the selected severity will be shown.'
254
+ ));
255
+ this.hoverService.requestHover({
256
+ content: tooltipContent,
257
+ target: e.currentTarget,
258
+ position: 'bottom'
259
+ });
260
+ };
261
+
208
262
  protected renderDebugConsoleSelector(widget: Widget | undefined): React.ReactNode {
209
263
  const availableConsoles: SelectOption[] = [];
210
- this.consoleSessionManager.all.forEach(e => {
211
- if (e instanceof DebugConsoleSession) {
212
- availableConsoles.push({
213
- value: e.id,
214
- label: e.debugSession.label
215
- });
264
+ const sortedSessions = this.consoleSessionManager.all
265
+ .filter((e): e is DebugConsoleSession => e instanceof DebugConsoleSession)
266
+ .sort((a, b) => {
267
+ if (a.terminated !== b.terminated) {
268
+ return a.terminated ? 1 : -1;
269
+ }
270
+ return 0;
271
+ });
272
+
273
+ sortedSessions.forEach(session => {
274
+ let label = session.debugSession.label;
275
+ if (session.terminated) {
276
+ label = `${label} (${nls.localizeByDefault('Stopped')})`;
216
277
  }
278
+ availableConsoles.push({
279
+ value: session.id,
280
+ label
281
+ });
217
282
  });
218
283
 
219
- return <SelectComponent
284
+ const selectedId = this.consoleSessionManager.selectedSession?.id;
285
+
286
+ return <div onMouseEnter={this.handleSessionSelectorMouseEnter}><SelectComponent
220
287
  key="debugConsoleSelector"
221
288
  options={availableConsoles}
222
- defaultValue={0}
223
- onChange={this.changeDebugConsole} />;
289
+ defaultValue={selectedId}
290
+ onChange={this.changeDebugConsole} />
291
+ </div>;
224
292
  }
225
293
 
294
+ protected handleSessionSelectorMouseEnter = (e: React.MouseEvent<HTMLDivElement>): void => {
295
+ const tooltipContent = new MarkdownStringImpl();
296
+ tooltipContent.appendMarkdown(nls.localize(
297
+ 'theia/debug/consoleSessionSelectorTooltip',
298
+ 'Switch between debug sessions. Each debug session has its own console output.'
299
+ ));
300
+ this.hoverService.requestHover({
301
+ content: tooltipContent,
302
+ target: e.currentTarget,
303
+ position: 'bottom'
304
+ });
305
+ };
306
+
307
+ protected renderFilterInput(): React.ReactNode {
308
+ return (
309
+ <div className="item enabled debug-console-filter-container">
310
+ <input
311
+ type="text"
312
+ className="theia-input"
313
+ placeholder={nls.localize('theia/debug/consoleFilter', 'Filter (e.g. text, !exclude)')}
314
+ aria-label={nls.localize('theia/debug/consoleFilterAriaLabel', 'Filter debug console output')}
315
+ ref={ref => { this.filterInputRef = ref ?? undefined; }}
316
+ onChange={this.handleFilterInputChange}
317
+ onMouseEnter={this.handleFilterMouseEnter}
318
+ />
319
+ {this.currentFilterValue && <span
320
+ className="debug-console-filter-btn codicon codicon-close action-label"
321
+ role="button"
322
+ aria-label={nls.localizeByDefault('Clear')}
323
+ onClick={this.handleFilterClear}
324
+ title={nls.localizeByDefault('Clear')}
325
+ />}
326
+ </div>
327
+ );
328
+ }
329
+
330
+ protected handleFilterInputChange = (e: React.ChangeEvent<HTMLInputElement>): void => {
331
+ const value = e.target.value;
332
+ this.currentFilterValue = value;
333
+ this.filterChangedEmitter.fire();
334
+ this.applyFilterDebounced(value);
335
+ };
336
+
337
+ protected applyFilterDebounced = debounce((value: string) => {
338
+ const session = this.consoleSessionManager.selectedSession;
339
+ if (session) {
340
+ session.filterText = value;
341
+ }
342
+ }, 150);
343
+
344
+ protected handleFilterClear = (): void => {
345
+ if (this.filterInputRef) {
346
+ this.filterInputRef.value = '';
347
+ }
348
+ this.currentFilterValue = '';
349
+ const session = this.consoleSessionManager.selectedSession;
350
+ if (session) {
351
+ session.filterText = '';
352
+ }
353
+ this.filterChangedEmitter.fire();
354
+ };
355
+
356
+ protected handleFilterMouseEnter = (e: React.MouseEvent<HTMLInputElement>): void => {
357
+ const tooltipContent = new MarkdownStringImpl();
358
+ tooltipContent.appendMarkdown(nls.localize(
359
+ 'theia/debug/consoleFilterTooltip',
360
+ 'Filter console output by text. Separate multiple terms with commas. Prefix with `!` to exclude a term.\n\n' +
361
+ 'Examples:\n\n' +
362
+ '- `text` - show lines containing "text"\n' +
363
+ '- `text, other` - show lines containing "text" or "other"\n' +
364
+ '- `!text` - hide lines containing "text"\n' +
365
+ '- `text, !other` - show "text" but hide "other"'
366
+ ));
367
+ this.hoverService.requestHover({
368
+ content: tooltipContent,
369
+ target: e.currentTarget,
370
+ position: 'bottom'
371
+ });
372
+ };
373
+
226
374
  protected changeDebugConsole = (option: SelectOption) => {
227
375
  const id = option.value!;
228
376
  const session = this.consoleSessionManager.get(id);
@@ -246,6 +394,14 @@ export class DebugConsoleContribution extends AbstractViewContribution<ConsoleWi
246
394
  protected async clearConsole(): Promise<void> {
247
395
  const widget = await this.widget;
248
396
  widget.clear();
397
+ const selectedSession = this.consoleSessionManager.selectedSession;
398
+ if (selectedSession instanceof DebugConsoleSession && selectedSession.terminated) {
399
+ this.consoleSessionManager.delete(selectedSession.id);
400
+ }
401
+ }
402
+
403
+ dispose(): void {
404
+ this.toDispose.dispose();
249
405
  }
250
406
 
251
407
  }
@@ -41,6 +41,8 @@ export class DebugConsoleSession extends ConsoleSession {
41
41
 
42
42
  protected items: ConsoleItem[] = [];
43
43
 
44
+ protected _terminated = false;
45
+
44
46
  protected _debugSession: DebugSession;
45
47
 
46
48
  // content buffer for [append](#append) method
@@ -57,6 +59,17 @@ export class DebugConsoleSession extends ConsoleSession {
57
59
  this.id = value.id;
58
60
  }
59
61
 
62
+ get terminated(): boolean {
63
+ return this._terminated;
64
+ }
65
+
66
+ markTerminated(): void {
67
+ if (!this._terminated) {
68
+ this._terminated = true;
69
+ this.fireDidChange();
70
+ }
71
+ }
72
+
60
73
  @postConstruct()
61
74
  init(): void {
62
75
  this.completionKinds.set('method', monaco.languages.CompletionItemKind.Method);
@@ -89,7 +102,58 @@ export class DebugConsoleSession extends ConsoleSession {
89
102
  }
90
103
 
91
104
  getElements(): IterableIterator<ConsoleItem> {
92
- return this.items.filter(e => !this.severity || e.severity === this.severity)[Symbol.iterator]();
105
+ return this.items.filter(e => this.matchesFilter(e))[Symbol.iterator]();
106
+ }
107
+
108
+ protected matchesFilter(item: ConsoleItem): boolean {
109
+ if (this.severity && item.severity !== this.severity) {
110
+ return false;
111
+ }
112
+ if (this.filterText) {
113
+ const text = this.getItemText(item).toLowerCase();
114
+ const parsedFilters = this.parseFilterText(this.filterText.toLowerCase());
115
+
116
+ if (parsedFilters.include.length > 0) {
117
+ const matchesAnyInclude = parsedFilters.include.some(filter => text.includes(filter));
118
+ if (!matchesAnyInclude) {
119
+ return false;
120
+ }
121
+ }
122
+
123
+ for (const filter of parsedFilters.exclude) {
124
+ if (text.includes(filter)) {
125
+ return false;
126
+ }
127
+ }
128
+ }
129
+ return true;
130
+ }
131
+
132
+ protected parseFilterText(filterText: string): { include: string[]; exclude: string[] } {
133
+ const include: string[] = [];
134
+ const exclude: string[] = [];
135
+
136
+ const terms = filterText.split(',').map(term => term.trim()).filter(term => term.length > 0);
137
+
138
+ for (const term of terms) {
139
+ if (term.startsWith('!') && term.length > 1) {
140
+ exclude.push(term.substring(1));
141
+ } else {
142
+ include.push(term);
143
+ }
144
+ }
145
+
146
+ return { include, exclude };
147
+ }
148
+
149
+ protected getItemText(item: ConsoleItem): string {
150
+ if (item instanceof AnsiConsoleItem) {
151
+ return item.content;
152
+ }
153
+ if (item instanceof ExpressionItem) {
154
+ return `${item.expression} ${item.value}`;
155
+ }
156
+ return '';
93
157
  }
94
158
 
95
159
  protected async completions(model: monaco.editor.ITextModel, position: monaco.Position): Promise<monaco.languages.CompletionList | undefined> {
@@ -92,9 +92,12 @@ export class DisassemblyViewWidget extends BaseWidget {
92
92
  this._fontInfo = BareFontInfo.createFromRawSettings(this.toFontInfo(), PixelRatio.getInstance(window).value);
93
93
  this.editorPreferences.onPreferenceChanged(() => this._fontInfo = BareFontInfo.createFromRawSettings(this.toFontInfo(), PixelRatio.getInstance(window).value));
94
94
  this.debugPreferences.onPreferenceChanged(e => {
95
- if (e.preferenceName === 'debug.disassemblyView.showSourceCode' && e.newValue !== this._enableSourceCodeRender) {
96
- this._enableSourceCodeRender = e.newValue;
97
- this.reloadDisassembly(undefined);
95
+ if (e.preferenceName === 'debug.disassemblyView.showSourceCode') {
96
+ const showSourceCode = this.debugPreferences['debug.disassemblyView.showSourceCode'];
97
+ if (showSourceCode !== this._enableSourceCodeRender) {
98
+ this._enableSourceCodeRender = showSourceCode;
99
+ this.reloadDisassembly(undefined);
100
+ }
98
101
  } else {
99
102
  this._disassembledInstructions?.rerender();
100
103
  }
@@ -110,6 +110,7 @@ export class DebugEditorModel implements Disposable {
110
110
  this.editor.onDidResize(e => this.breakpointWidget.inputSize = e),
111
111
  this.sessions.onDidChange(() => this.update()),
112
112
  this.toDisposeOnUpdate,
113
+ Disposable.create(() => this.toDisposeOnModelChange.dispose()),
113
114
  this.sessionManager.onDidChangeBreakpoints(({ session, uri }) => {
114
115
  if ((!session || session === this.sessionManager.currentSession) && uri.isEqual(this.uri)) {
115
116
  this.render();
@@ -68,9 +68,12 @@ export class DebugInlineValueDecorator implements FrontendApplicationContributio
68
68
  onStart(): void {
69
69
  StandaloneServices.get(ICodeEditorService).registerDecorationType('Inline debug decorations', INLINE_VALUE_DECORATION_KEY, {});
70
70
  this.enabled = !!this.preferences['debug.inlineValues'];
71
- this.preferences.onPreferenceChanged(({ preferenceName, newValue }) => {
72
- if (preferenceName === 'debug.inlineValues' && !!newValue !== this.enabled) {
73
- this.enabled = !!newValue;
71
+ this.preferences.onPreferenceChanged(({ preferenceName }) => {
72
+ if (preferenceName === 'debug.inlineValues') {
73
+ const inlineValues = !!this.preferences['debug.inlineValues'];
74
+ if (inlineValues !== this.enabled) {
75
+ this.enabled = inlineValues;
76
+ }
74
77
  }
75
78
  });
76
79
  }
@@ -52,7 +52,9 @@ export class DebugSourceBreakpoint extends DebugBreakpoint<SourceBreakpoint> imp
52
52
  setEnabled(enabled: boolean): void {
53
53
  const { uri, raw } = this;
54
54
  let shouldUpdate = false;
55
- let breakpoints = raw && this.doRemove(this.origins.filter(origin => !(origin.raw.line === raw.line && origin.raw.column === raw.column)));
55
+ const originLine = this.origin.raw.line;
56
+ const originColumn = this.origin.raw.column;
57
+ let breakpoints = raw && this.doRemove(this.origins.filter(origin => !(origin.raw.line === originLine && origin.raw.column === originColumn)));
56
58
  // Check for breakpoints array with at least one entry
57
59
  if (breakpoints && breakpoints.length) {
58
60
  shouldUpdate = true;
@@ -17,3 +17,31 @@
17
17
  #debugConsoleSeverity {
18
18
  margin-right: 4px;
19
19
  }
20
+
21
+ .debug-console-filter-container {
22
+ display: flex;
23
+ align-items: center;
24
+ background: var(--theia-input-background);
25
+ border: solid var(--theia-border-width) var(--theia-dropdown-border);
26
+ border-radius: var(--theia-search-box-radius);
27
+ height: var(--theia-content-line-height);
28
+ }
29
+
30
+ .debug-console-filter-container:focus-within {
31
+ border-color: var(--theia-focusBorder);
32
+ }
33
+
34
+ .debug-console-filter-container input.theia-input {
35
+ flex: 1;
36
+ min-width: 175px;
37
+ box-sizing: border-box;
38
+ background: none;
39
+ border: none !important;
40
+ outline: none;
41
+ text-overflow: ellipsis;
42
+ }
43
+
44
+ .debug-console-filter-btn {
45
+ box-sizing: border-box;
46
+ align-items: center;
47
+ }
@@ -43,11 +43,11 @@ export const debugPreferencesSchema: PreferenceSchema = {
43
43
  'debug.showInStatusBar': {
44
44
  enum: ['never', 'always', 'onFirstSessionStart'],
45
45
  enumDescriptions: [
46
- nls.localizeByDefault('Never show debug in Status bar'),
47
- nls.localizeByDefault('Always show debug in Status bar'),
48
- nls.localizeByDefault('Show debug in Status bar only after debug was started for the first time')
46
+ nls.localizeByDefault('Never show debug item in status bar'),
47
+ nls.localizeByDefault('Always show debug item in status bar'),
48
+ nls.localizeByDefault('Show debug item in status bar only after debug was started for the first time')
49
49
  ],
50
- description: nls.localizeByDefault('Controls when the debug Status bar should be visible.'),
50
+ description: nls.localizeByDefault('Controls when the debug status bar item should be visible.'),
51
51
  default: 'onFirstSessionStart'
52
52
  },
53
53
  'debug.confirmOnExit': {