@opensumi/ide-terminal-next 3.5.1-next-1730948411.0 → 3.5.1-next-1730963433.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.
- package/lib/browser/component/resize.view.d.ts +1 -3
- package/lib/browser/component/resize.view.d.ts.map +1 -1
- package/lib/browser/component/resize.view.js +24 -20
- package/lib/browser/component/resize.view.js.map +1 -1
- package/lib/browser/component/tab.item.d.ts +2 -6
- package/lib/browser/component/tab.item.d.ts.map +1 -1
- package/lib/browser/component/tab.item.js +32 -24
- package/lib/browser/component/tab.item.js.map +1 -1
- package/lib/browser/component/tab.view.d.ts +1 -3
- package/lib/browser/component/tab.view.d.ts.map +1 -1
- package/lib/browser/component/tab.view.js +5 -9
- package/lib/browser/component/tab.view.js.map +1 -1
- package/lib/browser/component/terminal.view.d.ts +1 -3
- package/lib/browser/component/terminal.view.d.ts.map +1 -1
- package/lib/browser/component/terminal.view.js +8 -7
- package/lib/browser/component/terminal.view.js.map +1 -1
- package/lib/browser/contribution/terminal.command.d.ts.map +1 -1
- package/lib/browser/contribution/terminal.command.js +24 -19
- package/lib/browser/contribution/terminal.command.js.map +1 -1
- package/lib/browser/terminal.api.d.ts.map +1 -1
- package/lib/browser/terminal.api.js +5 -2
- package/lib/browser/terminal.api.js.map +1 -1
- package/lib/browser/terminal.client.d.ts.map +1 -1
- package/lib/browser/terminal.client.js +8 -4
- package/lib/browser/terminal.client.js.map +1 -1
- package/lib/browser/terminal.controller.d.ts.map +1 -1
- package/lib/browser/terminal.controller.js +12 -15
- package/lib/browser/terminal.controller.js.map +1 -1
- package/lib/browser/terminal.render.d.ts +2 -6
- package/lib/browser/terminal.render.d.ts.map +1 -1
- package/lib/browser/terminal.search.js +1 -1
- package/lib/browser/terminal.search.js.map +1 -1
- package/lib/browser/terminal.view.d.ts +19 -22
- package/lib/browser/terminal.view.d.ts.map +1 -1
- package/lib/browser/terminal.view.js +121 -214
- package/lib/browser/terminal.view.js.map +1 -1
- package/lib/common/controller.d.ts +7 -6
- package/lib/common/controller.d.ts.map +1 -1
- package/lib/common/controller.js.map +1 -1
- package/lib/common/render.d.ts +2 -5
- package/lib/common/render.d.ts.map +1 -1
- package/lib/common/render.js.map +1 -1
- package/lib/common/resize.d.ts +10 -9
- package/lib/common/resize.d.ts.map +1 -1
- package/package.json +18 -17
- package/src/browser/component/resize.view.tsx +69 -54
- package/src/browser/component/tab.item.tsx +43 -32
- package/src/browser/component/tab.view.tsx +11 -16
- package/src/browser/component/terminal.view.tsx +11 -8
- package/src/browser/contribution/terminal.command.ts +26 -20
- package/src/browser/terminal.api.ts +6 -2
- package/src/browser/terminal.client.ts +8 -4
- package/src/browser/terminal.controller.ts +12 -18
- package/src/browser/terminal.search.ts +1 -1
- package/src/browser/terminal.view.ts +132 -127
- package/src/common/controller.ts +7 -8
- package/src/common/render.ts +2 -5
- package/src/common/resize.ts +13 -9
- package/lib/browser/component/terminal.select.d.ts +0 -6
- package/lib/browser/component/terminal.select.d.ts.map +0 -1
- package/lib/browser/component/terminal.select.js +0 -19
- package/lib/browser/component/terminal.select.js.map +0 -1
- package/src/browser/component/terminal.select.tsx +0 -29
|
@@ -114,7 +114,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
114
114
|
},
|
|
115
115
|
{
|
|
116
116
|
execute: () => {
|
|
117
|
-
const group = this.view.currentGroup;
|
|
117
|
+
const group = this.view.currentGroup.get();
|
|
118
118
|
if (!group) {
|
|
119
119
|
return;
|
|
120
120
|
}
|
|
@@ -161,7 +161,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
161
161
|
},
|
|
162
162
|
{
|
|
163
163
|
execute: async () => {
|
|
164
|
-
const widgetId = this.view.currentWidgetId;
|
|
164
|
+
const widgetId = this.view.currentWidgetId.get();
|
|
165
165
|
if (widgetId) {
|
|
166
166
|
this.view.removeWidget(widgetId);
|
|
167
167
|
}
|
|
@@ -193,7 +193,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
193
193
|
},
|
|
194
194
|
{
|
|
195
195
|
execute: () => {
|
|
196
|
-
const widgetId = this.view.currentWidgetId;
|
|
196
|
+
const widgetId = this.view.currentWidgetId.get();
|
|
197
197
|
const client = this.terminalController.findClientFromWidgetId(widgetId);
|
|
198
198
|
if (client) {
|
|
199
199
|
client.selectAll();
|
|
@@ -209,7 +209,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
209
209
|
},
|
|
210
210
|
{
|
|
211
211
|
execute: () => {
|
|
212
|
-
const current = this.view.currentWidgetId;
|
|
212
|
+
const current = this.view.currentWidgetId.get();
|
|
213
213
|
const client = this.terminalController.findClientFromWidgetId(current);
|
|
214
214
|
if (client) {
|
|
215
215
|
client.clear();
|
|
@@ -267,7 +267,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
267
267
|
|
|
268
268
|
registry.registerCommand(TERMINAL_COMMANDS.COPY, {
|
|
269
269
|
execute: async () => {
|
|
270
|
-
const current = this.view.currentWidgetId;
|
|
270
|
+
const current = this.view.currentWidgetId.get();
|
|
271
271
|
const client = this.terminalController.findClientFromWidgetId(current);
|
|
272
272
|
if (client) {
|
|
273
273
|
await this.clipboardService.writeText(client.getSelection());
|
|
@@ -277,7 +277,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
277
277
|
|
|
278
278
|
registry.registerCommand(TERMINAL_COMMANDS.PASTE, {
|
|
279
279
|
execute: async () => {
|
|
280
|
-
const current = this.view.currentWidgetId;
|
|
280
|
+
const current = this.view.currentWidgetId.get();
|
|
281
281
|
const client = this.terminalController.findClientFromWidgetId(current);
|
|
282
282
|
if (client) {
|
|
283
283
|
client.paste(await this.clipboardService.readText());
|
|
@@ -287,7 +287,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
287
287
|
|
|
288
288
|
registry.registerCommand(TERMINAL_COMMANDS.SELECT_ALL, {
|
|
289
289
|
execute: () => {
|
|
290
|
-
const current = this.view.currentWidgetId;
|
|
290
|
+
const current = this.view.currentWidgetId.get();
|
|
291
291
|
const client = this.terminalController.findClientFromWidgetId(current);
|
|
292
292
|
if (client) {
|
|
293
293
|
client.selectAll();
|
|
@@ -297,9 +297,10 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
297
297
|
|
|
298
298
|
registry.registerCommand(TERMINAL_COMMANDS.RE_LAUNCH, {
|
|
299
299
|
execute: () => {
|
|
300
|
-
const groups = this.view.groups;
|
|
300
|
+
const groups = this.view.groups.get();
|
|
301
301
|
for (const group of groups) {
|
|
302
|
-
group.widgets.
|
|
302
|
+
const widgets = group.widgets.get();
|
|
303
|
+
widgets.forEach((widget) => {
|
|
303
304
|
const client = this.terminalController.findClientFromWidgetId(widget.id);
|
|
304
305
|
if (client) {
|
|
305
306
|
client.reset();
|
|
@@ -318,8 +319,8 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
318
319
|
|
|
319
320
|
registry.registerCommand(TERMINAL_COMMANDS.FOCUS_NEXT_TERMINAL, {
|
|
320
321
|
execute: () => {
|
|
321
|
-
const group = this.view.currentGroup;
|
|
322
|
-
if (group.widgets.length <= 1) {
|
|
322
|
+
const group = this.view.currentGroup.get();
|
|
323
|
+
if (group && group.widgets.get().length <= 1) {
|
|
323
324
|
return;
|
|
324
325
|
}
|
|
325
326
|
const client = this.getNextOrPrevTerminalClient('next');
|
|
@@ -329,8 +330,8 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
329
330
|
|
|
330
331
|
registry.registerCommand(TERMINAL_COMMANDS.FOCUS_PREVIOUS_TERMINAL, {
|
|
331
332
|
execute: () => {
|
|
332
|
-
const group = this.view.currentGroup;
|
|
333
|
-
if (group.widgets.length <= 1) {
|
|
333
|
+
const group = this.view.currentGroup.get();
|
|
334
|
+
if (group && group.widgets.get().length <= 1) {
|
|
334
335
|
return;
|
|
335
336
|
}
|
|
336
337
|
const client = this.getNextOrPrevTerminalClient('prev');
|
|
@@ -340,7 +341,7 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
340
341
|
|
|
341
342
|
registry.registerCommand(TERMINAL_COMMANDS.KILL_PROCESS, {
|
|
342
343
|
execute: async () => {
|
|
343
|
-
const current = this.view.currentWidgetId;
|
|
344
|
+
const current = this.view.currentWidgetId.get();
|
|
344
345
|
const client = this.terminalController.findClientFromWidgetId(current);
|
|
345
346
|
if (client) {
|
|
346
347
|
const select = client.getSelection();
|
|
@@ -357,17 +358,22 @@ export class TerminalCommandContribution implements CommandContribution, ClientA
|
|
|
357
358
|
}
|
|
358
359
|
|
|
359
360
|
private getNextOrPrevTerminalClient(kind: 'next' | 'prev'): ITerminalClient | undefined {
|
|
360
|
-
const group = this.view.currentGroup;
|
|
361
|
-
|
|
361
|
+
const group = this.view.currentGroup.get();
|
|
362
|
+
if (!group) {
|
|
363
|
+
return;
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
const widgets = group.widgets.get();
|
|
367
|
+
const currentIdx = widgets.findIndex((w) => w.id === this.view.currentWidgetId.get());
|
|
362
368
|
|
|
363
|
-
let index;
|
|
369
|
+
let index: number;
|
|
364
370
|
if (kind === 'next') {
|
|
365
|
-
index = currentIdx ===
|
|
371
|
+
index = currentIdx === widgets.length - 1 ? 0 : currentIdx + 1;
|
|
366
372
|
} else {
|
|
367
|
-
index = currentIdx === 0 ?
|
|
373
|
+
index = currentIdx === 0 ? widgets.length - 1 : currentIdx - 1;
|
|
368
374
|
}
|
|
369
375
|
|
|
370
|
-
const widget =
|
|
376
|
+
const widget = widgets[index];
|
|
371
377
|
return this.terminalController.findClientFromWidgetId(widget.id);
|
|
372
378
|
}
|
|
373
379
|
}
|
|
@@ -2,6 +2,7 @@ import capitalize from 'lodash/capitalize';
|
|
|
2
2
|
|
|
3
3
|
import { Autowired, Injectable } from '@opensumi/di';
|
|
4
4
|
import { Emitter, Event } from '@opensumi/ide-core-common';
|
|
5
|
+
import { transaction } from '@opensumi/ide-monaco/lib/common/observable';
|
|
5
6
|
|
|
6
7
|
import {
|
|
7
8
|
ITerminalApiService,
|
|
@@ -67,7 +68,7 @@ export class TerminalApiService implements ITerminalApiService {
|
|
|
67
68
|
return Array.from(this.controller.clients.values()).map((v) => ({
|
|
68
69
|
id: v.id,
|
|
69
70
|
name: v.name,
|
|
70
|
-
isActive: this.view.currentWidgetId === v.id,
|
|
71
|
+
isActive: this.view.currentWidgetId.get() === v.id,
|
|
71
72
|
}));
|
|
72
73
|
}
|
|
73
74
|
|
|
@@ -164,7 +165,10 @@ export class TerminalApiService implements ITerminalApiService {
|
|
|
164
165
|
const groupIndex = this.view.createGroup();
|
|
165
166
|
const group = this.view.getGroup(groupIndex);
|
|
166
167
|
const widget = this.view.createWidget(group, widgetId, false, true);
|
|
167
|
-
|
|
168
|
+
transaction((tx) => {
|
|
169
|
+
widget.name.set(capitalize(uniqName), tx);
|
|
170
|
+
});
|
|
171
|
+
|
|
168
172
|
this.view.selectWidget(widgetId);
|
|
169
173
|
|
|
170
174
|
widget.onRender(() => {
|
|
@@ -17,6 +17,7 @@ import {
|
|
|
17
17
|
} from '@opensumi/ide-core-common';
|
|
18
18
|
import { WorkbenchEditorService } from '@opensumi/ide-editor/lib/common';
|
|
19
19
|
import { IFileServiceClient } from '@opensumi/ide-file-service/lib/common';
|
|
20
|
+
import { transaction } from '@opensumi/ide-monaco/lib/common/observable';
|
|
20
21
|
import { IMessageService } from '@opensumi/ide-overlay';
|
|
21
22
|
import { IVariableResolverService } from '@opensumi/ide-variable/lib/common';
|
|
22
23
|
import { IWorkspaceService } from '@opensumi/ide-workspace/lib/common';
|
|
@@ -191,7 +192,9 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
191
192
|
this.addDispose(
|
|
192
193
|
this.internalService.onProcessChange((e) => {
|
|
193
194
|
if (e.sessionId === this.id) {
|
|
194
|
-
|
|
195
|
+
transaction((tx) => {
|
|
196
|
+
this.widget.processName.set(e.processName, tx);
|
|
197
|
+
});
|
|
195
198
|
}
|
|
196
199
|
}),
|
|
197
200
|
);
|
|
@@ -281,8 +284,9 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
281
284
|
if (!options.cwd) {
|
|
282
285
|
// resolve cwd from the group first widget
|
|
283
286
|
const group = widget.group;
|
|
284
|
-
|
|
285
|
-
|
|
287
|
+
const widgets = group.widgets.get();
|
|
288
|
+
if (widgets.length > 1 && widgets[0]) {
|
|
289
|
+
const cwd = await this.internalService.getCwd(widgets[0].id);
|
|
286
290
|
if (cwd) {
|
|
287
291
|
options.cwd = cwd;
|
|
288
292
|
}
|
|
@@ -755,7 +759,7 @@ export class TerminalClient extends Disposable implements ITerminalClient {
|
|
|
755
759
|
}
|
|
756
760
|
|
|
757
761
|
updateTerminalName(options: { name: string }) {
|
|
758
|
-
if (!this.name && !this._widget.name) {
|
|
762
|
+
if (!this.name && !this._widget.name.get()) {
|
|
759
763
|
this._widget.rename(options.name || this.name);
|
|
760
764
|
}
|
|
761
765
|
}
|
|
@@ -321,16 +321,6 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
321
321
|
let firstAvailableId = '';
|
|
322
322
|
const { groups, current } = history;
|
|
323
323
|
|
|
324
|
-
// const ids: (string | { client: string })[] = [];
|
|
325
|
-
|
|
326
|
-
// groups.forEach((widgets) => ids.push(...widgets.map((widget) => widget.client)));
|
|
327
|
-
|
|
328
|
-
// 之前OpenSumi的Check终端活跃机制是有问题的,暂时不启用,这部分逻辑在PtyService会兜住
|
|
329
|
-
// const checked = await this.service.check(ids.map((id) => (typeof id === 'string' ? id : id.clientId)));
|
|
330
|
-
// if (!checked) {
|
|
331
|
-
// return;
|
|
332
|
-
// }
|
|
333
|
-
|
|
334
324
|
for (const widgets of groups) {
|
|
335
325
|
if (!widgets) {
|
|
336
326
|
continue;
|
|
@@ -397,7 +387,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
397
387
|
await Promise.all(promises);
|
|
398
388
|
}
|
|
399
389
|
|
|
400
|
-
const selectedIndex = this.terminalView.groups.findIndex((group) => group.widgetsMap.has(currentWidgetId));
|
|
390
|
+
const selectedIndex = this.terminalView.groups.get().findIndex((group) => group.widgetsMap.has(currentWidgetId));
|
|
401
391
|
|
|
402
392
|
if (selectedIndex > -1 && currentWidgetId) {
|
|
403
393
|
this.terminalView.selectWidget(currentWidgetId);
|
|
@@ -501,7 +491,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
501
491
|
this.terminalView.selectWidget(current.id);
|
|
502
492
|
} else {
|
|
503
493
|
this.terminalView.selectGroup(
|
|
504
|
-
this.terminalView.currentGroupIndex > -1 ? this.terminalView.currentGroupIndex : 0,
|
|
494
|
+
this.terminalView.currentGroupIndex.get() > -1 ? this.terminalView.currentGroupIndex.get() : 0,
|
|
505
495
|
);
|
|
506
496
|
}
|
|
507
497
|
}),
|
|
@@ -521,7 +511,7 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
521
511
|
this.terminalView.selectWidget(widget.id);
|
|
522
512
|
} else {
|
|
523
513
|
this.terminalView.selectGroup(
|
|
524
|
-
this.terminalView.currentGroupIndex > -1 ? this.terminalView.currentGroupIndex : 0,
|
|
514
|
+
this.terminalView.currentGroupIndex.get() > -1 ? this.terminalView.currentGroupIndex.get() : 0,
|
|
525
515
|
);
|
|
526
516
|
}
|
|
527
517
|
}
|
|
@@ -569,11 +559,12 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
569
559
|
|
|
570
560
|
toJSON() {
|
|
571
561
|
const groups: { client: string }[][] = [];
|
|
572
|
-
let cClient = this._clients.get(this.terminalView.currentWidgetId);
|
|
573
|
-
this.terminalView.groups.forEach((wGroup) => {
|
|
562
|
+
let cClient = this._clients.get(this.terminalView.currentWidgetId.get());
|
|
563
|
+
this.terminalView.groups.get().forEach((wGroup) => {
|
|
574
564
|
const group: { client: string }[] = [];
|
|
575
565
|
|
|
576
|
-
wGroup.widgets.
|
|
566
|
+
const widgets = wGroup.widgets.get();
|
|
567
|
+
widgets.forEach((widget) => {
|
|
577
568
|
const client = this._clients.get(widget.id);
|
|
578
569
|
const disablePersistence =
|
|
579
570
|
!this.preferenceService.get(CodeTerminalSettingId.EnablePersistentSessions) ||
|
|
@@ -723,13 +714,16 @@ export class TerminalController extends WithEventBus implements ITerminalControl
|
|
|
723
714
|
}
|
|
724
715
|
|
|
725
716
|
clearCurrentGroup() {
|
|
726
|
-
this.terminalView.currentGroup
|
|
727
|
-
|
|
717
|
+
const group = this.terminalView.currentGroup.get();
|
|
718
|
+
if (group) {
|
|
719
|
+
const widgets = group.widgets.get();
|
|
720
|
+
widgets.forEach((widget) => {
|
|
728
721
|
const client = this._clients.get(widget.id);
|
|
729
722
|
if (client) {
|
|
730
723
|
client.clear();
|
|
731
724
|
}
|
|
732
725
|
});
|
|
726
|
+
}
|
|
733
727
|
}
|
|
734
728
|
|
|
735
729
|
clearAllGroups() {
|
|
@@ -24,7 +24,7 @@ export class TerminalSearchService implements ITerminalSearchService {
|
|
|
24
24
|
onVisibleChange: Event<boolean> = this._onVisibleChange.event;
|
|
25
25
|
|
|
26
26
|
get client(): ITerminalClient | undefined {
|
|
27
|
-
return this.controller.findClientFromWidgetId(this.terminalView.currentWidget.id);
|
|
27
|
+
return this.controller.findClientFromWidgetId(this.terminalView.currentWidget.get().id);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
open() {
|