Skip to content

Commit ebe8d66

Browse files
authored
chore: improve terminal tab title (#1705)
* chore: improve terminal tab title * chore: improve terminal tab title
1 parent 802bceb commit ebe8d66

5 files changed

Lines changed: 18 additions & 2 deletions

File tree

packages/i18n/src/common/en-US.lang.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -635,6 +635,7 @@ export const localizationBundle = {
635635
'terminal.try.reconnect': 'Try To Reconnect The Terminal',
636636
'terminal.try.recreate': 'Try To Recreate The Terminal',
637637
'terminal.new': 'Create Terminal',
638+
'terminal.new.type': 'Create terminal by type',
638639
'terminal.split': 'Split Terminal',
639640
'terminal.clear': 'Remove All Terminals',
640641
'terminal.clear.content': 'Clear All Contents',

packages/i18n/src/common/zh-CN.lang.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -668,6 +668,7 @@ export const localizationBundle = {
668668
'terminal.try.reconnect': '重新连接终端',
669669
'terminal.try.recreate': '重新启动终端',
670670
'terminal.new': '新建终端',
671+
'terminal.new.type': '根据终端类型新建',
671672
'terminal.split': '拆分终端',
672673
'terminal.clear': '终止所有终端',
673674
'terminal.clear.content': '清空当前终端内容',

packages/terminal-next/src/browser/component/tab.item.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { observer } from 'mobx-react-lite';
44
import React, { useEffect, useRef, KeyboardEvent, createElement } from 'react';
55

66
import { Icon } from '@opensumi/ide-components/lib/icon/icon';
7-
import { getIcon, useInjectable, URI } from '@opensumi/ide-core-browser';
7+
import { getIcon, useInjectable, URI, localize, TERMINAL_COMMANDS } from '@opensumi/ide-core-browser';
88
import { Loading } from '@opensumi/ide-core-browser/lib/components/loading';
99
import { LAYOUT_VIEW_SIZE } from '@opensumi/ide-core-browser/lib/layout/constants';
1010
import { IIconService } from '@opensumi/ide-theme';
@@ -101,17 +101,22 @@ export const renderInfoItem = observer((props: ItemProps) => {
101101

102102
export const renderAddItem = observer((props: ItemProps) => {
103103
const handleAdd = debounce(() => props.onClick && props.onClick(), 20);
104+
const keybinding = props.getKeybinding && props.getKeybinding(TERMINAL_COMMANDS.ADD.id);
105+
106+
const createTitle = keybinding ? `${localize('terminal.new')}(${keybinding})` : localize('terminal.new');
104107

105108
return (
106109
<div className={styles.item_wrapper}>
107110
<div
111+
title={createTitle}
108112
className={clx({
109113
[getIcon('plus')]: true,
110114
[styles.item_add]: true,
111115
})}
112116
onClick={() => handleAdd()}
113117
/>
114118
<div
119+
title={localize('terminal.new.type')}
115120
className={clx({
116121
[getIcon('down')]: true,
117122
[styles.item_more]: true,

packages/terminal-next/src/browser/component/tab.view.tsx

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { observer } from 'mobx-react-lite';
22
import React, { useRef, useEffect, useState, useCallback } from 'react';
33

4-
import { useInjectable } from '@opensumi/ide-core-browser';
4+
import { KeybindingRegistry, useInjectable } from '@opensumi/ide-core-browser';
55
import { Scroll } from '@opensumi/ide-core-browser/lib/components/scroll';
66
import { IThemeService, ThemeType } from '@opensumi/ide-theme';
77

@@ -16,6 +16,7 @@ export default observer(() => {
1616
const provider = useInjectable<ITerminalRenderProvider>(ITerminalRenderProvider);
1717
const menuService = useInjectable<TerminalContextMenuService>(TerminalContextMenuService);
1818
const themeService = useInjectable<IThemeService>(IThemeService);
19+
const keybindingService = useInjectable<KeybindingRegistry>(KeybindingRegistry);
1920
const tabContainer = useRef<HTMLDivElement | null>();
2021
const [theme, setTheme] = useState<ThemeType>('dark');
2122

@@ -70,6 +71,13 @@ export default observer(() => {
7071
view.createWidget(group);
7172
view.selectGroup(index);
7273
}}
74+
getKeybinding={(id) => {
75+
const bindings = keybindingService.getKeybindingsForCommand(id);
76+
if (Array.isArray(bindings) && bindings[0]) {
77+
return keybindingService.acceleratorFor(bindings[0], '')[0] || '';
78+
}
79+
return '';
80+
}}
7381
onDropdown={(event) => menuService.onDropDownContextMenu(event)}
7482
provider={provider}
7583
theme={theme}

packages/terminal-next/src/common/render.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ export interface ItemProps {
2020
onInputEnter?: (id: string, name: string) => void;
2121
onDropdown?: (event: React.MouseEvent<HTMLElement>) => void;
2222
onContextMenu?: (event: React.MouseEvent<HTMLElement>) => void;
23+
getKeybinding?: (command: string) => string;
2324
provider: ITerminalRenderProvider;
2425
theme: ThemeType;
2526
}

0 commit comments

Comments
 (0)