Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
921203d9
V
vscode
项目概览
掘金者说
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
921203d9
编写于
4月 30, 2021
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Revert "Use a menu instead of hard coding actions in tabsWidget (#122461)"
This reverts commit
f727e50c
.
上级
1ed6862c
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
32 addition
and
39 deletion
+32
-39
src/vs/platform/actions/common/actions.ts
src/vs/platform/actions/common/actions.ts
+0
-1
src/vs/workbench/contrib/terminal/browser/terminalActions.ts
src/vs/workbench/contrib/terminal/browser/terminalActions.ts
+2
-23
src/vs/workbench/contrib/terminal/browser/terminalService.ts
src/vs/workbench/contrib/terminal/browser/terminalService.ts
+1
-1
src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts
.../workbench/contrib/terminal/browser/terminalTabbedView.ts
+1
-2
src/vs/workbench/contrib/terminal/browser/terminalTabsWidget.ts
.../workbench/contrib/terminal/browser/terminalTabsWidget.ts
+28
-12
未找到文件。
src/vs/platform/actions/common/actions.ts
浏览文件 @
921203d9
...
...
@@ -162,7 +162,6 @@ export class MenuId {
static
readonly
TerminalTabsWidgetContext
=
new
MenuId
(
'
TerminalTabsWidgetContext
'
);
static
readonly
TerminalTabsWidgetEmptyContext
=
new
MenuId
(
'
TerminalTabsWidgetEmptyContext
'
);
static
readonly
TerminalSingleTabContext
=
new
MenuId
(
'
TerminalSingleTabContext
'
);
static
readonly
TerminalTabInlineActions
=
new
MenuId
(
'
TerminalTabInlineActions
'
);
readonly
id
:
number
;
readonly
_debugName
:
string
;
...
...
src/vs/workbench/contrib/terminal/browser/terminalActions.ts
浏览文件 @
921203d9
...
...
@@ -1394,7 +1394,7 @@ export function registerTerminalActions() {
constructor
()
{
super
({
id
:
TERMINAL_COMMAND_ID
.
SPLIT_INSTANCE
,
title
:
{
value
:
localize
(
'
workbench.action.terminal.split
Instance
'
,
"
Split Terminal
"
),
original
:
'
Split Terminal
'
},
title
:
{
value
:
localize
(
'
workbench.action.terminal.split
'
,
"
Split Terminal
"
),
original
:
'
Split Terminal
'
},
f1
:
false
,
category
,
precondition
:
KEYBINDING_CONTEXT_TERMINAL_PROCESS_SUPPORTED
,
...
...
@@ -1424,13 +1424,6 @@ export function registerTerminalActions() {
focusNext
(
accessor
);
}
});
MenuRegistry
.
appendMenuItem
(
MenuId
.
TerminalTabInlineActions
,
{
command
:
{
id
:
TERMINAL_COMMAND_ID
.
SPLIT_INSTANCE
,
title
:
localize
(
'
workbench.action.terminal.splitInstance
'
,
"
Split Terminal
"
),
},
group
:
ContextMenuGroup
.
Create
});
registerAction2
(
class
extends
Action2
{
constructor
()
{
super
({
...
...
@@ -1595,7 +1588,7 @@ export function registerTerminalActions() {
super
({
id
:
TERMINAL_COMMAND_ID
.
KILL_INSTANCE
,
title
:
{
value
:
localize
(
'
workbench.action.terminal.kill
Instance
'
,
"
Kill Terminal
"
),
original
:
'
Kill Terminal
'
value
:
localize
(
'
workbench.action.terminal.kill
.short
'
,
"
Kill Terminal
"
),
original
:
'
Kill Terminal
'
},
f1
:
false
,
category
,
...
...
@@ -1617,17 +1610,8 @@ export function registerTerminalActions() {
}
async
run
(
accessor
:
ServicesAccessor
)
{
getSelectedInstances
(
accessor
)?.
forEach
(
instance
=>
instance
.
dispose
(
true
));
accessor
.
get
(
ITerminalService
).
focusTabs
();
focusNext
(
accessor
);
}
});
MenuRegistry
.
appendMenuItem
(
MenuId
.
TerminalTabInlineActions
,
{
command
:
{
id
:
TERMINAL_COMMAND_ID
.
KILL_INSTANCE
,
title
:
localize
(
'
workbench.action.terminal.killInstance
'
,
"
Kill Terminal
"
)
},
group
:
ContextMenuGroup
.
Kill
});
registerAction2
(
class
extends
Action2
{
constructor
()
{
super
({
...
...
@@ -1907,8 +1891,3 @@ function getSelectedInstances(accessor: ServicesAccessor): ITerminalInstance[] |
}
return
instances
;
}
function
focusNext
(
accessor
:
ServicesAccessor
):
void
{
const
listService
=
accessor
.
get
(
IListService
);
listService
.
lastFocusedList
?.
focusNext
();
}
src/vs/workbench/contrib/terminal/browser/terminalService.ts
浏览文件 @
921203d9
...
...
@@ -451,7 +451,7 @@ export class TerminalService implements ITerminalService {
const
newIndex
=
index
<
this
.
_terminalTabs
.
length
?
index
:
this
.
_terminalTabs
.
length
-
1
;
this
.
setActiveTabByIndex
(
newIndex
);
const
activeInstance
=
this
.
getActiveInstance
();
if
(
this
.
_onActiveInstanceChanged
&&
activeInstance
?.
hadFocusOnExit
)
{
if
(
activeInstance
)
{
activeInstance
.
focus
(
true
);
}
}
else
if
(
activeTabIndex
>=
this
.
_terminalTabs
.
length
)
{
...
...
src/vs/workbench/contrib/terminal/browser/terminalTabbedView.ts
浏览文件 @
921203d9
...
...
@@ -93,9 +93,8 @@ export class TerminalTabbedView extends Disposable {
this
.
_instanceMenu
=
this
.
_register
(
menuService
.
createMenu
(
MenuId
.
TerminalContainerContext
,
contextKeyService
));
this
.
_tabsWidgetMenu
=
this
.
_register
(
menuService
.
createMenu
(
MenuId
.
TerminalTabsWidgetContext
,
contextKeyService
));
this
.
_tabsWidgetEmptyMenu
=
this
.
_register
(
menuService
.
createMenu
(
MenuId
.
TerminalTabsWidgetEmptyContext
,
contextKeyService
));
const
inlineMenu
=
this
.
_register
(
menuService
.
createMenu
(
MenuId
.
TerminalTabInlineActions
,
contextKeyService
));
this
.
_register
(
this
.
_tabsWidget
=
this
.
_instantiationService
.
createInstance
(
TerminalTabsWidget
,
this
.
_terminalTabTree
,
inlineMenu
));
this
.
_register
(
this
.
_tabsWidget
=
this
.
_instantiationService
.
createInstance
(
TerminalTabsWidget
,
this
.
_terminalTabTree
));
this
.
_register
(
this
.
_findWidget
=
this
.
_instantiationService
.
createInstance
(
TerminalFindWidget
,
this
.
_terminalService
.
getFindState
()));
parentElement
.
appendChild
(
this
.
_findWidget
.
getDomNode
());
...
...
src/vs/workbench/contrib/terminal/browser/terminalTabsWidget.ts
浏览文件 @
921203d9
...
...
@@ -10,15 +10,17 @@ import { IAccessibilityService } from 'vs/platform/accessibility/common/accessib
import
{
IConfigurationService
}
from
'
vs/platform/configuration/common/configuration
'
;
import
{
IContextKey
,
IContextKeyService
}
from
'
vs/platform/contextkey/common/contextkey
'
;
import
{
IKeybindingService
}
from
'
vs/platform/keybinding/common/keybinding
'
;
import
{
IThemeService
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
IThemeService
,
ThemeIcon
}
from
'
vs/platform/theme/common/themeService
'
;
import
{
ITerminalInstance
,
ITerminalService
}
from
'
vs/workbench/contrib/terminal/browser/terminal
'
;
import
{
localize
}
from
'
vs/nls
'
;
import
*
as
DOM
from
'
vs/base/browser/dom
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
ActionBar
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
IMenu
,
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
MenuItemAction
}
from
'
vs/platform/actions/common/actions
'
;
import
{
MenuEntryActionViewItem
}
from
'
vs/platform/actions/browser/menuEntryActionViewItem
'
;
import
{
KEYBINDING_CONTEXT_TERMINAL_TABS_SINGULAR_SELECTION
,
TERMINAL_COMMAND_ID
}
from
'
vs/workbench/contrib/terminal/common/terminal
'
;
import
{
Codicon
}
from
'
vs/base/common/codicons
'
;
import
{
Action
}
from
'
vs/base/common/actions
'
;
import
{
MarkdownString
}
from
'
vs/base/common/htmlContent
'
;
import
{
TerminalDecorationsProvider
}
from
'
vs/workbench/contrib/terminal/browser/terminalDecorationsProvider
'
;
import
{
DEFAULT_LABELS_CONTAINER
,
IResourceLabel
,
ResourceLabels
}
from
'
vs/workbench/browser/labels
'
;
...
...
@@ -26,7 +28,6 @@ import { IDecorationsService } from 'vs/workbench/services/decorations/browser/d
import
{
IHoverAction
,
IHoverService
}
from
'
vs/workbench/services/hover/browser/hover
'
;
import
Severity
from
'
vs/base/common/severity
'
;
import
{
DisposableStore
}
from
'
vs/base/common/lifecycle
'
;
import
{
Codicon
}
from
'
vs/base/common/codicons
'
;
const
$
=
DOM
.
$
;
const
TAB_HEIGHT
=
22
;
...
...
@@ -40,7 +41,6 @@ export class TerminalTabsWidget extends WorkbenchObjectTree<ITerminalInstance>
constructor
(
container
:
HTMLElement
,
inlineMenu
:
IMenu
,
@
IContextKeyService
contextKeyService
:
IContextKeyService
,
@
IListService
listService
:
IListService
,
@
IThemeService
themeService
:
IThemeService
,
...
...
@@ -56,7 +56,7 @@ export class TerminalTabsWidget extends WorkbenchObjectTree<ITerminalInstance>
getHeight
:
()
=>
TAB_HEIGHT
,
getTemplateId
:
()
=>
'
terminal.tabs
'
},
[
instantiationService
.
createInstance
(
TerminalTabsRenderer
,
container
,
in
lineMenu
,
instantiationService
.
createInstance
(
ResourceLabels
,
DEFAULT_LABELS_CONTAINER
))],
[
instantiationService
.
createInstance
(
TerminalTabsRenderer
,
container
,
in
stantiationService
.
createInstance
(
ResourceLabels
,
DEFAULT_LABELS_CONTAINER
),
()
=>
this
.
getSelection
(
))],
{
horizontalScrolling
:
false
,
supportDynamicHeights
:
false
,
...
...
@@ -169,10 +169,11 @@ export class TerminalTabsWidget extends WorkbenchObjectTree<ITerminalInstance>
class
TerminalTabsRenderer
implements
ITreeRenderer
<
ITerminalInstance
,
never
,
ITerminalTabEntryTemplate
>
{
templateId
=
'
terminal.tabs
'
;
constructor
(
private
readonly
_container
:
HTMLElement
,
private
readonly
_inlineMenu
:
IMenu
,
private
readonly
_labels
:
ResourceLabels
,
private
readonly
_getSelection
:
()
=>
(
ITerminalInstance
|
null
)[],
@
IInstantiationService
private
readonly
_instantiationService
:
IInstantiationService
,
@
ITerminalService
private
readonly
_terminalService
:
ITerminalService
,
@
IHoverService
private
readonly
_hoverService
:
IHoverService
,
...
...
@@ -334,16 +335,31 @@ class TerminalTabsRenderer implements ITreeRenderer<ITerminalInstance, never, IT
fillActionBar
(
instance
:
ITerminalInstance
,
template
:
ITerminalTabEntryTemplate
):
void
{
// If the instance is within the selection, split all selected
const
actions
=
this
.
_inlineMenu
.
getActions
();
const
actions
=
[
new
Action
(
TERMINAL_COMMAND_ID
.
SPLIT_INSTANCE
,
localize
(
'
terminal.split
'
,
"
Split
"
),
ThemeIcon
.
asClassName
(
Codicon
.
splitHorizontal
),
true
,
async
()
=>
{
this
.
_runForSelectionOrInstance
(
instance
,
e
=>
this
.
_terminalService
.
splitInstance
(
e
));
}),
new
Action
(
TERMINAL_COMMAND_ID
.
KILL_INSTANCE
,
localize
(
'
terminal.kill
'
,
"
Kill
"
),
ThemeIcon
.
asClassName
(
Codicon
.
trashcan
),
true
,
async
()
=>
{
this
.
_runForSelectionOrInstance
(
instance
,
e
=>
e
.
dispose
());
})
];
// TODO: Cache these in a way that will use the correct instance
template
.
actionBar
.
clear
();
for
(
const
[,
action
]
of
actions
)
{
for
(
const
a
of
action
)
{
a
.
item
.
icon
=
a
.
id
===
TERMINAL_COMMAND_ID
.
KILL_INSTANCE
?
Codicon
.
trashcan
:
Codicon
.
splitHorizontal
;
if
(
'
item
'
in
a
)
{
template
.
actionBar
.
push
(
a
,
{
icon
:
true
,
label
:
false
,
keybinding
:
this
.
_keybindingService
.
lookupKeybinding
(
a
.
id
)?.
getLabel
()
});
for
(
const
action
of
actions
)
{
template
.
actionBar
.
push
(
action
,
{
icon
:
true
,
label
:
false
,
keybinding
:
this
.
_keybindingService
.
lookupKeybinding
(
action
.
id
)?.
getLabel
()
});
}
}
private
_runForSelectionOrInstance
(
instance
:
ITerminalInstance
,
callback
:
(
instance
:
ITerminalInstance
)
=>
void
)
{
const
selection
=
this
.
_getSelection
();
if
(
selection
.
includes
(
instance
))
{
for
(
const
s
of
selection
)
{
if
(
s
)
{
callback
(
s
);
}
}
}
else
{
callback
(
instance
);
}
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录