@theia/core 1.76.0-next.7 → 1.77.0-next.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 (179) hide show
  1. package/README.md +8 -8
  2. package/i18n/nls.cs.json +187 -49
  3. package/i18n/nls.de.json +187 -49
  4. package/i18n/nls.es.json +187 -49
  5. package/i18n/nls.fr.json +187 -49
  6. package/i18n/nls.hu.json +187 -49
  7. package/i18n/nls.it.json +187 -49
  8. package/i18n/nls.ja.json +187 -49
  9. package/i18n/nls.json +187 -49
  10. package/i18n/nls.ko.json +187 -49
  11. package/i18n/nls.pl.json +187 -49
  12. package/i18n/nls.pt-br.json +187 -49
  13. package/i18n/nls.ru.json +187 -49
  14. package/i18n/nls.tr.json +187 -49
  15. package/i18n/nls.zh-cn.json +187 -49
  16. package/i18n/nls.zh-tw.json +187 -49
  17. package/lib/browser/catalog.json +178 -97
  18. package/lib/browser/dialogs.d.ts +2 -0
  19. package/lib/browser/dialogs.d.ts.map +1 -1
  20. package/lib/browser/dialogs.js +9 -5
  21. package/lib/browser/dialogs.js.map +1 -1
  22. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  23. package/lib/browser/frontend-application-module.js +3 -0
  24. package/lib/browser/frontend-application-module.js.map +1 -1
  25. package/lib/browser/index.d.ts +1 -0
  26. package/lib/browser/index.d.ts.map +1 -1
  27. package/lib/browser/index.js +1 -0
  28. package/lib/browser/index.js.map +1 -1
  29. package/lib/browser/resource-context-key.d.ts +25 -0
  30. package/lib/browser/resource-context-key.d.ts.map +1 -1
  31. package/lib/browser/resource-context-key.js +41 -16
  32. package/lib/browser/resource-context-key.js.map +1 -1
  33. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts +7 -5
  34. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.d.ts.map +1 -1
  35. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js +13 -12
  36. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.js.map +1 -1
  37. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts +11 -1
  38. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.d.ts.map +1 -1
  39. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js +38 -3
  40. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.js.map +1 -1
  41. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts +2 -1
  42. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.d.ts.map +1 -1
  43. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js +4 -2
  44. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.js.map +1 -1
  45. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js +123 -2
  46. package/lib/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.js.map +1 -1
  47. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts +12 -4
  48. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.d.ts.map +1 -1
  49. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js +2 -2
  50. package/lib/browser/shell/tab-bar-toolbar/tab-toolbar-item.js.map +1 -1
  51. package/lib/browser/tree/tree-widget.d.ts +20 -2
  52. package/lib/browser/tree/tree-widget.d.ts.map +1 -1
  53. package/lib/browser/tree/tree-widget.js +31 -13
  54. package/lib/browser/tree/tree-widget.js.map +1 -1
  55. package/lib/browser/tree/tree-widget.spec.d.ts +2 -0
  56. package/lib/browser/tree/tree-widget.spec.d.ts.map +1 -0
  57. package/lib/browser/tree/tree-widget.spec.js +192 -0
  58. package/lib/browser/tree/tree-widget.spec.js.map +1 -0
  59. package/lib/browser/view-container.d.ts.map +1 -1
  60. package/lib/browser/view-container.js +2 -2
  61. package/lib/browser/view-container.js.map +1 -1
  62. package/lib/browser/widget-context-key-contribution.d.ts +17 -0
  63. package/lib/browser/widget-context-key-contribution.d.ts.map +1 -0
  64. package/lib/browser/widget-context-key-contribution.js +20 -0
  65. package/lib/browser/widget-context-key-contribution.js.map +1 -0
  66. package/lib/browser/window/browser-window-module.d.ts.map +1 -1
  67. package/lib/browser/window/browser-window-module.js +3 -0
  68. package/lib/browser/window/browser-window-module.js.map +1 -1
  69. package/lib/browser/window/window-launch-args.d.ts +29 -0
  70. package/lib/browser/window/window-launch-args.d.ts.map +1 -0
  71. package/lib/browser/window/window-launch-args.js +39 -0
  72. package/lib/browser/window/window-launch-args.js.map +1 -0
  73. package/lib/browser-only/frontend-only-application-module.d.ts.map +1 -1
  74. package/lib/browser-only/frontend-only-application-module.js +5 -2
  75. package/lib/browser-only/frontend-only-application-module.js.map +1 -1
  76. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts +3 -1
  77. package/lib/browser-only/messaging/frontend-only-service-connection-provider.d.ts.map +1 -1
  78. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js +8 -7
  79. package/lib/browser-only/messaging/frontend-only-service-connection-provider.js.map +1 -1
  80. package/lib/common/index.d.ts +2 -0
  81. package/lib/common/index.d.ts.map +1 -1
  82. package/lib/common/index.js +2 -0
  83. package/lib/common/index.js.map +1 -1
  84. package/lib/common/launch-arguments.d.ts +32 -0
  85. package/lib/common/launch-arguments.d.ts.map +1 -0
  86. package/lib/common/launch-arguments.js +44 -0
  87. package/lib/common/launch-arguments.js.map +1 -0
  88. package/lib/common/remote-cli-args-contribution.d.ts +22 -0
  89. package/lib/common/remote-cli-args-contribution.d.ts.map +1 -0
  90. package/lib/common/remote-cli-args-contribution.js +20 -0
  91. package/lib/common/remote-cli-args-contribution.js.map +1 -0
  92. package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts +6 -3
  93. package/lib/electron-browser/messaging/electron-ipc-connection-source.d.ts.map +1 -1
  94. package/lib/electron-browser/messaging/electron-ipc-connection-source.js +4 -3
  95. package/lib/electron-browser/messaging/electron-ipc-connection-source.js.map +1 -1
  96. package/lib/electron-browser/preload.d.ts.map +1 -1
  97. package/lib/electron-browser/preload.js +3 -1
  98. package/lib/electron-browser/preload.js.map +1 -1
  99. package/lib/electron-browser/window/electron-window-launch-args.d.ts +14 -0
  100. package/lib/electron-browser/window/electron-window-launch-args.d.ts.map +1 -0
  101. package/lib/electron-browser/window/electron-window-launch-args.js +41 -0
  102. package/lib/electron-browser/window/electron-window-launch-args.js.map +1 -0
  103. package/lib/electron-browser/window/electron-window-launch-args.spec.d.ts +2 -0
  104. package/lib/electron-browser/window/electron-window-launch-args.spec.d.ts.map +1 -0
  105. package/lib/electron-browser/window/electron-window-launch-args.spec.js +43 -0
  106. package/lib/electron-browser/window/electron-window-launch-args.spec.js.map +1 -0
  107. package/lib/electron-browser/window/electron-window-module.d.ts.map +1 -1
  108. package/lib/electron-browser/window/electron-window-module.js +7 -0
  109. package/lib/electron-browser/window/electron-window-module.js.map +1 -1
  110. package/lib/electron-common/electron-api.d.ts +10 -0
  111. package/lib/electron-common/electron-api.d.ts.map +1 -1
  112. package/lib/electron-common/electron-api.js.map +1 -1
  113. package/lib/electron-main/electron-api-main.d.ts.map +1 -1
  114. package/lib/electron-main/electron-api-main.js +7 -1
  115. package/lib/electron-main/electron-api-main.js.map +1 -1
  116. package/lib/electron-main/electron-main-application-module.d.ts.map +1 -1
  117. package/lib/electron-main/electron-main-application-module.js +2 -0
  118. package/lib/electron-main/electron-main-application-module.js.map +1 -1
  119. package/lib/electron-main/electron-main-application.d.ts +57 -2
  120. package/lib/electron-main/electron-main-application.d.ts.map +1 -1
  121. package/lib/electron-main/electron-main-application.js +68 -8
  122. package/lib/electron-main/electron-main-application.js.map +1 -1
  123. package/lib/electron-main/launch-args-store.d.ts +45 -0
  124. package/lib/electron-main/launch-args-store.d.ts.map +1 -0
  125. package/lib/electron-main/launch-args-store.js +76 -0
  126. package/lib/electron-main/launch-args-store.js.map +1 -0
  127. package/lib/electron-main/launch-args-store.spec.d.ts +2 -0
  128. package/lib/electron-main/launch-args-store.spec.d.ts.map +1 -0
  129. package/lib/electron-main/launch-args-store.spec.js +53 -0
  130. package/lib/electron-main/launch-args-store.spec.js.map +1 -0
  131. package/lib/electron-main/launch-argv-parser.d.ts +19 -0
  132. package/lib/electron-main/launch-argv-parser.d.ts.map +1 -0
  133. package/lib/electron-main/launch-argv-parser.js +71 -0
  134. package/lib/electron-main/launch-argv-parser.js.map +1 -0
  135. package/lib/electron-main/launch-argv-parser.spec.d.ts +2 -0
  136. package/lib/electron-main/launch-argv-parser.spec.d.ts.map +1 -0
  137. package/lib/electron-main/launch-argv-parser.spec.js +62 -0
  138. package/lib/electron-main/launch-argv-parser.spec.js.map +1 -0
  139. package/lib/electron-main/theia-electron-window.d.ts +2 -0
  140. package/lib/electron-main/theia-electron-window.d.ts.map +1 -1
  141. package/lib/electron-main/theia-electron-window.js +12 -0
  142. package/lib/electron-main/theia-electron-window.js.map +1 -1
  143. package/package.json +11 -11
  144. package/src/browser/dialogs.ts +10 -5
  145. package/src/browser/frontend-application-module.ts +5 -1
  146. package/src/browser/index.ts +1 -0
  147. package/src/browser/resource-context-key.ts +61 -16
  148. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-menu-adapters.tsx +13 -12
  149. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar-registry.ts +36 -4
  150. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.spec.ts +150 -3
  151. package/src/browser/shell/tab-bar-toolbar/tab-bar-toolbar.tsx +6 -3
  152. package/src/browser/shell/tab-bar-toolbar/tab-toolbar-item.tsx +13 -5
  153. package/src/browser/style/tree.css +7 -0
  154. package/src/browser/tree/tree-widget.spec.tsx +245 -0
  155. package/src/browser/tree/tree-widget.tsx +36 -12
  156. package/src/browser/view-container.ts +3 -3
  157. package/src/browser/widget-context-key-contribution.ts +34 -0
  158. package/src/browser/window/browser-window-module.ts +3 -0
  159. package/src/browser/window/window-launch-args.ts +53 -0
  160. package/src/browser-only/frontend-only-application-module.ts +5 -2
  161. package/src/browser-only/messaging/frontend-only-service-connection-provider.ts +3 -1
  162. package/src/common/i18n/nls.metadata.json +5246 -1106
  163. package/src/common/index.ts +2 -0
  164. package/src/common/launch-arguments.ts +61 -0
  165. package/src/common/remote-cli-args-contribution.ts +39 -0
  166. package/src/electron-browser/messaging/electron-ipc-connection-source.ts +6 -3
  167. package/src/electron-browser/preload.ts +3 -1
  168. package/src/electron-browser/window/electron-window-launch-args.spec.ts +45 -0
  169. package/src/electron-browser/window/electron-window-launch-args.ts +38 -0
  170. package/src/electron-browser/window/electron-window-module.ts +7 -0
  171. package/src/electron-common/electron-api.ts +10 -0
  172. package/src/electron-main/electron-api-main.ts +7 -1
  173. package/src/electron-main/electron-main-application-module.ts +2 -0
  174. package/src/electron-main/electron-main-application.ts +101 -8
  175. package/src/electron-main/launch-args-store.spec.ts +59 -0
  176. package/src/electron-main/launch-args-store.ts +73 -0
  177. package/src/electron-main/launch-argv-parser.spec.ts +70 -0
  178. package/src/electron-main/launch-argv-parser.ts +66 -0
  179. package/src/electron-main/theia-electron-window.ts +9 -0
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const launch_args_store_1 = require("./launch-args-store");
20
+ const args = (name, value) => ({ values: { [name]: [value] }, negated: [] });
21
+ describe('LaunchArgsStore', () => {
22
+ it('returns the stored argv for its window id', () => {
23
+ const store = new launch_args_store_1.LaunchArgsStore();
24
+ const launchArgs = { values: { 'attach-container': ['B'], 'session-preference': ['foo=1'] }, negated: [] };
25
+ store.store(1, launchArgs);
26
+ (0, chai_1.expect)(store.get(1)).to.deep.equal(launchArgs);
27
+ });
28
+ it('keeps the argv for the window lifetime, so a reload still sees it', () => {
29
+ const store = new launch_args_store_1.LaunchArgsStore();
30
+ store.store(1, args('attach-container', 'B'));
31
+ (0, chai_1.expect)(store.get(1)).to.deep.equal(args('attach-container', 'B'));
32
+ // a second read (e.g. after a reload) still returns the options
33
+ (0, chai_1.expect)(store.get(1)).to.deep.equal(args('attach-container', 'B'));
34
+ });
35
+ it('returns undefined for an unknown (cold-start) window id', () => {
36
+ const store = new launch_args_store_1.LaunchArgsStore();
37
+ (0, chai_1.expect)(store.get(42)).to.equal(undefined);
38
+ });
39
+ it('drops the argv once the window is deleted', () => {
40
+ const store = new launch_args_store_1.LaunchArgsStore();
41
+ store.store(1, args('attach-container', 'A'));
42
+ store.delete(1);
43
+ (0, chai_1.expect)(store.get(1)).to.equal(undefined);
44
+ });
45
+ it('keeps entries independent per window id', () => {
46
+ const store = new launch_args_store_1.LaunchArgsStore();
47
+ store.store(1, args('attach-container', 'A'));
48
+ store.store(2, args('attach-container', 'B'));
49
+ (0, chai_1.expect)(store.get(2)).to.deep.equal(args('attach-container', 'B'));
50
+ (0, chai_1.expect)(store.get(1)).to.deep.equal(args('attach-container', 'A'));
51
+ });
52
+ });
53
+ //# sourceMappingURL=launch-args-store.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-args-store.spec.js","sourceRoot":"","sources":["../../src/electron-main/launch-args-store.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { LaunchArguments } from '../common/launch-arguments';
2
+ /**
3
+ * Parses the `argv` of a forwarded launch into {@link LaunchArguments}.
4
+ *
5
+ * This lives in the Electron main process on purpose: the command line is parsed once, here, and
6
+ * every consumer (main-process contributions and the window the launch opened) works with the
7
+ * parsed result. No argument grammar is shipped to the renderer.
8
+ *
9
+ * The grammar mirrors what yargs accepts on cold start for the same flags: a value given as either
10
+ * `--name value` or `--name=value`, options repeatable to yield multiple values, a token that
11
+ * itself looks like an option (starts with `-`) never consumed as a value, and `--no-name` /
12
+ * `--name=false` recognised as an explicit negation.
13
+ *
14
+ * @experimental
15
+ */
16
+ export declare namespace LaunchArgvParser {
17
+ function parse(argv: readonly string[]): LaunchArguments;
18
+ }
19
+ //# sourceMappingURL=launch-argv-parser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-argv-parser.d.ts","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D;;;;;;;;;;;;;GAaG;AACH,yBAAiB,gBAAgB,CAAC;IAE9B,SAAgB,KAAK,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,eAAe,CA8B9D;CACJ"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.LaunchArgvParser = void 0;
19
+ /**
20
+ * Parses the `argv` of a forwarded launch into {@link LaunchArguments}.
21
+ *
22
+ * This lives in the Electron main process on purpose: the command line is parsed once, here, and
23
+ * every consumer (main-process contributions and the window the launch opened) works with the
24
+ * parsed result. No argument grammar is shipped to the renderer.
25
+ *
26
+ * The grammar mirrors what yargs accepts on cold start for the same flags: a value given as either
27
+ * `--name value` or `--name=value`, options repeatable to yield multiple values, a token that
28
+ * itself looks like an option (starts with `-`) never consumed as a value, and `--no-name` /
29
+ * `--name=false` recognised as an explicit negation.
30
+ *
31
+ * @experimental
32
+ */
33
+ var LaunchArgvParser;
34
+ (function (LaunchArgvParser) {
35
+ function parse(argv) {
36
+ const values = {};
37
+ const negated = [];
38
+ for (let i = 0; i < argv.length; i++) {
39
+ const token = argv[i];
40
+ if (!token.startsWith('--')) {
41
+ continue;
42
+ }
43
+ const name = token.substring(2);
44
+ const equalsIndex = name.indexOf('=');
45
+ if (equalsIndex >= 0) {
46
+ const key = name.substring(0, equalsIndex);
47
+ const value = name.substring(equalsIndex + 1);
48
+ if (value === 'false') {
49
+ negated.push(key);
50
+ }
51
+ else {
52
+ (values[key] ??= []).push(value);
53
+ }
54
+ }
55
+ else if (name.startsWith('no-')) {
56
+ negated.push(name.substring('no-'.length));
57
+ }
58
+ else {
59
+ const next = argv[i + 1];
60
+ // Like yargs, do not consume a following option-looking token (`-x`/`--x`) as the value.
61
+ if (next !== undefined && !next.startsWith('-')) {
62
+ (values[name] ??= []).push(next);
63
+ i++;
64
+ }
65
+ }
66
+ }
67
+ return { values, negated };
68
+ }
69
+ LaunchArgvParser.parse = parse;
70
+ })(LaunchArgvParser || (exports.LaunchArgvParser = LaunchArgvParser = {}));
71
+ //# sourceMappingURL=launch-argv-parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-argv-parser.js","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,oDAAoD;AACpD,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;;;AAIhF;;;;;;;;;;;;;GAaG;AACH,IAAiB,gBAAgB,CAiChC;AAjCD,WAAiB,gBAAgB;IAE7B,SAAgB,KAAK,CAAC,IAAuB;QACzC,MAAM,MAAM,GAA6B,EAAE,CAAC;QAC5C,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACnC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,SAAS;YACb,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACtC,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;gBACnB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;gBAC9C,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;oBACpB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACtB,CAAC;qBAAM,CAAC;oBACJ,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrC,CAAC;YACL,CAAC;iBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACJ,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACzB,yFAAyF;gBACzF,IAAI,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9C,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACjC,CAAC,EAAE,CAAC;gBACR,CAAC;YACL,CAAC;QACL,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IA9Be,sBAAK,QA8BpB,CAAA;AACL,CAAC,EAjCgB,gBAAgB,gCAAhB,gBAAgB,QAiChC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=launch-argv-parser.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-argv-parser.spec.d.ts","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ // *****************************************************************************
3
+ // Copyright (C) 2026 EclipseSource GmbH and others.
4
+ //
5
+ // This program and the accompanying materials are made available under the
6
+ // terms of the Eclipse Public License v. 2.0 which is available at
7
+ // http://www.eclipse.org/legal/epl-2.0.
8
+ //
9
+ // This Source Code may also be made available under the following Secondary
10
+ // Licenses when the conditions for such availability set forth in the Eclipse
11
+ // Public License v. 2.0 are satisfied: GNU General Public License, version 2
12
+ // with the GNU Classpath Exception which is available at
13
+ // https://www.gnu.org/software/classpath/license.html.
14
+ //
15
+ // SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
16
+ // *****************************************************************************
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ const chai_1 = require("chai");
19
+ const launch_arguments_1 = require("../common/launch-arguments");
20
+ const launch_argv_parser_1 = require("./launch-argv-parser");
21
+ describe('LaunchArgvParser', () => {
22
+ it('parses a "--name value" option', () => {
23
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['--attach-container', 'B']);
24
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal('B');
25
+ });
26
+ it('parses a "--name=value" option', () => {
27
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['--attach-container=B']);
28
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal('B');
29
+ });
30
+ it('keeps a value that itself contains "="', () => {
31
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['--session-preference=a=1']);
32
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal(['a=1']);
33
+ });
34
+ it('collects repeated options in order, last winning for a single value', () => {
35
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['--session-preference', 'a=1', '--session-preference=b=2', '--other', 'x']);
36
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal(['a=1', 'b=2']);
37
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'session-preference')).to.equal('b=2');
38
+ });
39
+ it('does not consume a following option as a value', () => {
40
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['--attach-container', '--session-preference', 'a=1']);
41
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal(undefined);
42
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal(['a=1']);
43
+ });
44
+ it('reports an absent option as empty', () => {
45
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['--other']);
46
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.values(args, 'session-preference')).to.deep.equal([]);
47
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'session-preference')).to.equal(undefined);
48
+ });
49
+ it('detects "--no-name" and "--name=false" negations', () => {
50
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse(['--no-dev-json']), 'dev-json')).to.be.true;
51
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse(['--dev-json=false']), 'dev-json')).to.be.true;
52
+ });
53
+ it('does not report a positive or absent flag as negated', () => {
54
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse(['--dev-json']), 'dev-json')).to.be.false;
55
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.isNegated(launch_argv_parser_1.LaunchArgvParser.parse([]), 'dev-json')).to.be.false;
56
+ });
57
+ it('ignores tokens that are not options', () => {
58
+ const args = launch_argv_parser_1.LaunchArgvParser.parse(['/path/to/app', 'positional', '--attach-container', 'B']);
59
+ (0, chai_1.expect)(launch_arguments_1.LaunchArguments.lastValue(args, 'attach-container')).to.equal('B');
60
+ });
61
+ });
62
+ //# sourceMappingURL=launch-argv-parser.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launch-argv-parser.spec.js","sourceRoot":"","sources":["../../src/electron-main/launch-argv-parser.spec.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import { FrontendApplicationState, StopReason } from '../common/frontend-applica
3
3
  import { BrowserWindow, BrowserWindowConstructorOptions } from '../../electron-shared/electron';
4
4
  import { ElectronMainApplicationGlobals } from './electron-main-constants';
5
5
  import { DisposableCollection, Emitter, Event } from '../common';
6
+ import { LaunchArgsStore } from './launch-args-store';
6
7
  /**
7
8
  * Theia tracks the maximized state of Electron Browser Windows.
8
9
  */
@@ -29,6 +30,7 @@ export declare class TheiaElectronWindow {
29
30
  protected readonly options: TheiaBrowserWindowOptions;
30
31
  protected readonly config: WindowApplicationConfig;
31
32
  protected readonly globals: ElectronMainApplicationGlobals;
33
+ protected readonly launchArgsStore: LaunchArgsStore;
32
34
  protected onDidCloseEmitter: Emitter<void>;
33
35
  get onDidClose(): Event<void>;
34
36
  protected readonly toDispose: DisposableCollection;
@@ -1 +1 @@
1
- {"version":3,"file":"theia-electron-window.d.ts","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAMjE;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,+BAA+B;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAE7E,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AACzE,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAQhE,qBACa,mBAAmB;IAEO,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IACxD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAEnG,SAAS,CAAC,iBAAiB,gBAAuB;IAElD,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAE5B;IAED,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAAoD;IAEhF,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IACjC,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,gBAAgB,EAAE,wBAAwB,CAAU;IAG9D,SAAS,CAAC,IAAI,IAAI,IAAI;IAatB,SAAS,CAAC,6BAA6B,IAAI,IAAI;IAuB/C;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAetB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9C,KAAK,CAAC,MAAM,GAAE,UAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;cAWvB,iBAAiB,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB/G,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAgBvC,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAMvC,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAMtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,OAAO,IAAI,IAAI;CAGlB;AAED,MAAM,WAAW,0BAA0B;IACvC,CAAC,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CAAC;CAChG;AAED,eAAO,MAAM,0BAA0B,eAAuC,CAAC"}
1
+ {"version":3,"file":"theia-electron-window.d.ts","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,wBAAwB,EAAE,UAAU,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EAAE,aAAa,EAAE,+BAA+B,EAAE,MAAM,gCAAgC,CAAC;AAEhG,OAAO,EAAE,8BAA8B,EAAE,MAAM,2BAA2B,CAAC;AAC3E,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AAKjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,+BAA+B;IAC9E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,eAAsC,CAAC;AAE7E,eAAO,MAAM,uBAAuB,eAAoC,CAAC;AACzE,MAAM,MAAM,uBAAuB,GAAG,yBAAyB,CAAC;AAQhE,qBACa,mBAAmB;IAEO,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IACxD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IAC5C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAC1E,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAE7E,SAAS,CAAC,iBAAiB,gBAAuB;IAElD,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,CAE5B;IAED,SAAS,CAAC,QAAQ,CAAC,SAAS,uBAAoD;IAEhF,SAAS,CAAC,OAAO,EAAE,aAAa,CAAC;IACjC,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,SAAS,CAAC,gBAAgB,UAAS;IACnC,SAAS,CAAC,gBAAgB,EAAE,wBAAwB,CAAU;IAG9D,SAAS,CAAC,IAAI,IAAI,IAAI;IAatB,SAAS,CAAC,6BAA6B,IAAI,IAAI;IAuB/C;;OAEG;IACH,SAAS,CAAC,iBAAiB,IAAI,IAAI;IAInC,SAAS,CAAC,oBAAoB,IAAI,IAAI;cAetB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAS9C,KAAK,CAAC,MAAM,GAAE,UAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;IAI9D,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;cAkBvB,iBAAiB,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAsB/G,SAAS,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAI/D,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAgBvC,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAMvC,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAMtC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItC,OAAO,IAAI,IAAI;CAGlB;AAED,MAAM,WAAW,0BAA0B;IACvC,CAAC,OAAO,EAAE,yBAAyB,EAAE,MAAM,EAAE,yBAAyB,GAAG,mBAAmB,CAAC;CAChG;AAED,eAAO,MAAM,0BAA0B,eAAuC,CAAC"}
@@ -26,6 +26,7 @@ const event_utils_1 = require("./event-utils");
26
26
  const uri_1 = require("../common/uri");
27
27
  const file_uri_1 = require("../common/file-uri");
28
28
  const electron_api_main_1 = require("./electron-api-main");
29
+ const launch_args_store_1 = require("./launch-args-store");
29
30
  exports.TheiaBrowserWindowOptions = Symbol('TheiaBrowserWindowOptions');
30
31
  exports.WindowApplicationConfig = Symbol('WindowApplicationConfig');
31
32
  var ClosingState;
@@ -119,6 +120,13 @@ let TheiaElectronWindow = class TheiaElectronWindow {
119
120
  this.handleStopRequest(async () => {
120
121
  this.applicationState = 'init';
121
122
  if (newUrl) {
123
+ // The window is being redirected to a *different* frontend, e.g. into a dev container
124
+ // after a CLI attach. The forwarded launch arguments belong to the launch that created
125
+ // this window and have been acted upon by now, so they must not be redeemed again by
126
+ // the frontend loaded from `newUrl`: that would re-run the attach inside the container
127
+ // and re-apply the launch's preferences to the remote backend. A plain reload (no
128
+ // `newUrl`) keeps them, so `Reload Window` still observes the arguments.
129
+ this.launchArgsStore.delete(this._window.webContents.id);
122
130
  this._window.loadURL(newUrl);
123
131
  }
124
132
  else {
@@ -197,6 +205,10 @@ tslib_1.__decorate([
197
205
  (0, inversify_1.inject)(electron_main_constants_1.ElectronMainApplicationGlobals),
198
206
  tslib_1.__metadata("design:type", Object)
199
207
  ], TheiaElectronWindow.prototype, "globals", void 0);
208
+ tslib_1.__decorate([
209
+ (0, inversify_1.inject)(launch_args_store_1.LaunchArgsStore),
210
+ tslib_1.__metadata("design:type", launch_args_store_1.LaunchArgsStore)
211
+ ], TheiaElectronWindow.prototype, "launchArgsStore", void 0);
200
212
  tslib_1.__decorate([
201
213
  (0, inversify_1.postConstruct)(),
202
214
  tslib_1.__metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"file":"theia-electron-window.js","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"theia-electron-window.js","sourceRoot":"","sources":["../../src/electron-main/theia-electron-window.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.76.0-next.7+7c303b183",
3
+ "version": "1.77.0-next.0+d8106d7ff",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -17,14 +17,14 @@
17
17
  "@lumino/virtualdom": "^2.0.5",
18
18
  "@lumino/widgets": "2.7.5",
19
19
  "@parcel/watcher": "^2.6.0",
20
- "@theia/application-package": "1.76.0-next.7+7c303b183",
21
- "@theia/request": "1.76.0-next.7+7c303b183",
20
+ "@theia/application-package": "1.77.0-next.0+d8106d7ff",
21
+ "@theia/request": "1.77.0-next.0+d8106d7ff",
22
22
  "@types/body-parser": "^1.19.6",
23
23
  "@types/express": "^4.17.25",
24
24
  "@types/fs-extra": "^4.0.15",
25
25
  "@types/lodash.debounce": "4.0.3",
26
26
  "@types/lodash.throttle": "^4.1.9",
27
- "@types/markdown-it": "^14.1.2",
27
+ "@types/markdown-it": "^14.2.0",
28
28
  "@types/markdown-it-emoji": "^3.0.1",
29
29
  "@types/route-parser": "^0.1.7",
30
30
  "@types/safer-buffer": "^2.1.3",
@@ -33,9 +33,9 @@
33
33
  "@vscode/codicons": "0.0.45",
34
34
  "ajv": "^6.15.0",
35
35
  "async-mutex": "^0.4.1",
36
- "body-parser": "^1.20.6",
36
+ "body-parser": "^1.20.8",
37
37
  "cookie": "^1.1.1",
38
- "dompurify": "^3.4.13",
38
+ "dompurify": "^3.4.15",
39
39
  "drivelist": "^12.0.2",
40
40
  "express": "^4.22.2",
41
41
  "fast-json-stable-stringify": "^2.1.0",
@@ -51,7 +51,7 @@
51
51
  "keytar": "7.9.0",
52
52
  "lodash.debounce": "^4.0.8",
53
53
  "lodash.throttle": "^4.1.1",
54
- "markdown-it": "^14.3.0",
54
+ "markdown-it": "^14.3.1",
55
55
  "markdown-it-anchor": "^9.2.1",
56
56
  "markdown-it-emoji": "^3.1.0",
57
57
  "msgpackr": "^1.12.1",
@@ -221,10 +221,10 @@
221
221
  "watch": "theiaext watch"
222
222
  },
223
223
  "devDependencies": {
224
- "@theia/ext-scripts": "1.75.0",
225
- "@theia/re-exports": "1.75.0",
224
+ "@theia/ext-scripts": "1.76.0",
225
+ "@theia/re-exports": "1.76.0",
226
226
  "@types/react": "^19.2.18",
227
- "@types/react-dom": "^19.2.4",
227
+ "@types/react-dom": "^19.2.7",
228
228
  "minimist": "^1.2.8",
229
229
  "nodejs-file-downloader": "4.13.0",
230
230
  "react": "^19.2.8",
@@ -233,5 +233,5 @@
233
233
  "nyc": {
234
234
  "extends": "../../configs/nyc.json"
235
235
  },
236
- "gitHead": "7c303b1836421183d7013f0bd679a9a30ff0b5dc"
236
+ "gitHead": "d8106d7ffa62b3413ff1ca5b63a0e6c2fe0b0649"
237
237
  }
@@ -100,11 +100,7 @@ export class DialogOverlayService implements FrontendApplicationContribution {
100
100
 
101
101
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
102
102
  push(dialog: AbstractDialog<any>): Disposable {
103
- if (this.documents.findIndex(document => document === dialog.node.ownerDocument) < 0) {
104
- addKeyListener(dialog.node.ownerDocument.body, Key.ENTER, e => this.handleEnter(e));
105
- addKeyListener(dialog.node.ownerDocument.body, Key.ESCAPE, e => this.handleEscape(e));
106
- this.documents.push(dialog.node.ownerDocument);
107
- }
103
+ this.ensureKeyListeners(dialog.node.ownerDocument);
108
104
  this.dialogs.unshift(dialog);
109
105
  return Disposable.create(() => {
110
106
  const index = this.dialogs.indexOf(dialog);
@@ -114,6 +110,15 @@ export class DialogOverlayService implements FrontendApplicationContribution {
114
110
  });
115
111
  }
116
112
 
113
+ /** Add the key listeners for `ownerDocument`, unless they are there already. */
114
+ protected ensureKeyListeners(ownerDocument: Document): void {
115
+ if (this.documents.indexOf(ownerDocument) < 0) {
116
+ addKeyListener(ownerDocument.body, Key.ENTER, e => this.handleEnter(e));
117
+ addKeyListener(ownerDocument.body, Key.ESCAPE, e => this.handleEscape(e));
118
+ this.documents.push(ownerDocument);
119
+ }
120
+ }
121
+
117
122
  protected handleEscape(event: KeyboardEvent): boolean | void {
118
123
  const dialog = this.currentDialog;
119
124
  if (dialog) {
@@ -37,7 +37,8 @@ import {
37
37
  InMemoryTextResourceResolver,
38
38
  UntitledResourceResolver,
39
39
  MenuPath,
40
- PreferenceService
40
+ PreferenceService,
41
+ RemoteCliArgsContribution
41
42
  } from '../common';
42
43
  import { KeybindingRegistry, KeybindingContext, KeybindingContribution } from './keybinding';
43
44
  import { FrontendApplication } from './frontend-application';
@@ -70,6 +71,7 @@ import { JsonSchemaStore, JsonSchemaContribution, DefaultJsonSchemaContribution,
70
71
  import { TabBarToolbarRegistry, TabBarToolbarContribution, TabBarToolbarFactory, TabBarToolbar } from './shell/tab-bar-toolbar';
71
72
  import { ContextKeyService, ContextKeyServiceDummyImpl } from './context-key-service';
72
73
  import { ResourceContextKey } from './resource-context-key';
74
+ import { WidgetContextKeyContribution } from './widget-context-key-contribution';
73
75
  import { KeyboardLayoutService } from './keyboard/keyboard-layout-service';
74
76
  import { MimeService } from './mime-service';
75
77
  import { ApplicationShellMouseTracker } from './shell/application-shell-mouse-tracker';
@@ -173,6 +175,7 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
173
175
  bind(FrontendApplicationStateService).toSelf().inSingletonScope();
174
176
  bind(DefaultFrontendApplicationContribution).toSelf();
175
177
  bindRootContributionProvider(bind, FrontendApplicationContribution);
178
+ bindRootContributionProvider(bind, RemoteCliArgsContribution);
176
179
 
177
180
  bind(ApplicationShellOptions).toConstantValue({});
178
181
  bind(ApplicationShell).toSelf().inSingletonScope();
@@ -191,6 +194,7 @@ export const frontendApplicationModule = new ContainerModule((bind, _unbind, _is
191
194
  bind(SplitPositionHandler).toSelf().inSingletonScope();
192
195
 
193
196
  bindRootContributionProvider(bind, TabBarToolbarContribution);
197
+ bindRootContributionProvider(bind, WidgetContextKeyContribution);
194
198
  bind(TabBarToolbarRegistry).toSelf().inSingletonScope();
195
199
  bind(FrontendApplicationContribution).toService(TabBarToolbarRegistry);
196
200
  bind(TabBarToolbarFactory).toFactory(context => () => {
@@ -50,6 +50,7 @@ export * from './hover-service';
50
50
  export * from './saveable-service';
51
51
  export * from './undo-redo-handler';
52
52
  export * from './widget-status-bar-service';
53
+ export * from './widget-context-key-contribution';
53
54
  export * from './badges';
54
55
  export * from './markdown-rendering/markdown-renderer';
55
56
  export * from './markdown-rendering/markdown';
@@ -19,6 +19,21 @@ import URI from '../common/uri';
19
19
  import { ContextKeyService, ContextKey } from './context-key-service';
20
20
  import { LanguageService } from './language-service';
21
21
 
22
+ /**
23
+ * The context key values describing a resource. Each property name is the context key identifier itself, so
24
+ * the entries can be handed to `ContextKeyService.createOverlay` as they are.
25
+ */
26
+ export interface ResourceContextKeyValues {
27
+ resource?: string;
28
+ resourceScheme?: string;
29
+ resourceFilename?: string;
30
+ resourceExtname?: string;
31
+ resourceLangId?: string;
32
+ resourceDirName?: string;
33
+ resourcePath?: string;
34
+ resourceSet: boolean;
35
+ }
36
+
22
37
  @injectable()
23
38
  export class ResourceContextKey {
24
39
 
@@ -39,14 +54,25 @@ export class ResourceContextKey {
39
54
 
40
55
  @postConstruct()
41
56
  protected init(): void {
42
- this.resource = this.contextKeyService.createKey<string>('resource', undefined);
43
- this.resourceSchemeKey = this.contextKeyService.createKey<string>('resourceScheme', undefined);
44
- this.resourceFileName = this.contextKeyService.createKey<string>('resourceFilename', undefined);
45
- this.resourceExtname = this.contextKeyService.createKey<string>('resourceExtname', undefined);
46
- this.resourceLangId = this.contextKeyService.createKey<string>('resourceLangId', undefined);
47
- this.resourceDirName = this.contextKeyService.createKey<string>('resourceDirName', undefined);
48
- this.resourcePath = this.contextKeyService.createKey<string>('resourcePath', undefined);
49
- this.resourceSet = this.contextKeyService.createKey<boolean>('resourceSet', false);
57
+ this.resource = this.createResourceKey('resource');
58
+ this.resourceSchemeKey = this.createResourceKey('resourceScheme');
59
+ this.resourceFileName = this.createResourceKey('resourceFilename');
60
+ this.resourceExtname = this.createResourceKey('resourceExtname');
61
+ this.resourceLangId = this.createResourceKey('resourceLangId');
62
+ this.resourceDirName = this.createResourceKey('resourceDirName');
63
+ this.resourcePath = this.createResourceKey('resourcePath');
64
+ this.resourceSet = this.createResourceKey('resourceSet', false);
65
+ }
66
+
67
+ /**
68
+ * Constrains the key name to the value properties, whose names are the context key identifiers, so that
69
+ * the keys this class creates and the ones it describes a resource with cannot drift apart.
70
+ */
71
+ protected createResourceKey<K extends keyof ResourceContextKeyValues>(
72
+ name: K,
73
+ defaultValue?: NonNullable<ResourceContextKeyValues[K]>
74
+ ): ContextKey<NonNullable<ResourceContextKeyValues[K]>> {
75
+ return this.contextKeyService.createKey(name, defaultValue);
50
76
  }
51
77
 
52
78
  get(): string | undefined {
@@ -54,14 +80,33 @@ export class ResourceContextKey {
54
80
  }
55
81
 
56
82
  set(resourceUri: URI | undefined): void {
57
- this.resource.set(resourceUri?.toString());
58
- this.resourceSchemeKey.set(resourceUri?.scheme);
59
- this.resourceFileName.set(resourceUri?.path.base);
60
- this.resourceExtname.set(resourceUri?.path.ext);
61
- this.resourceLangId.set(resourceUri && this.getLanguageId(resourceUri));
62
- this.resourceDirName.set(resourceUri?.path.dir.fsPath());
63
- this.resourcePath.set(resourceUri?.path.fsPath());
64
- this.resourceSet.set(Boolean(resourceUri));
83
+ const values = this.toValues(resourceUri);
84
+ this.resource.set(values.resource);
85
+ this.resourceSchemeKey.set(values.resourceScheme);
86
+ this.resourceFileName.set(values.resourceFilename);
87
+ this.resourceExtname.set(values.resourceExtname);
88
+ this.resourceLangId.set(values.resourceLangId);
89
+ this.resourceDirName.set(values.resourceDirName);
90
+ this.resourcePath.set(values.resourcePath);
91
+ this.resourceSet.set(values.resourceSet);
92
+ }
93
+
94
+ /**
95
+ * The values describing `resourceUri`, without applying them to the context.
96
+ *
97
+ * @param resourceUri the resource to describe, or `undefined` to obtain the values of an unset resource.
98
+ */
99
+ toValues(resourceUri: URI | undefined): ResourceContextKeyValues {
100
+ return {
101
+ resource: resourceUri?.toString(),
102
+ resourceScheme: resourceUri?.scheme,
103
+ resourceFilename: resourceUri?.path.base,
104
+ resourceExtname: resourceUri?.path.ext,
105
+ resourceLangId: this.getLanguageId(resourceUri),
106
+ resourceDirName: resourceUri?.path.dir.fsPath(),
107
+ resourcePath: resourceUri?.path.fsPath(),
108
+ resourceSet: Boolean(resourceUri)
109
+ };
65
110
  }
66
111
 
67
112
  protected getLanguageId(uri: URI | undefined): string | undefined {