Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
940acc1e
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,发现更多精彩内容 >>
未验证
提交
940acc1e
编写于
10月 29, 2018
作者:
D
Daniel Imms
提交者:
GitHub
10月 29, 2018
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #61584 from Microsoft/alexr00/fixWorkspaceRootSplit
Fix multi root workspace terminal split
上级
22951130
628ac962
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
26 addition
and
32 deletion
+26
-32
src/vs/workbench/parts/terminal/electron-browser/terminalActions.ts
...kbench/parts/terminal/electron-browser/terminalActions.ts
+26
-32
未找到文件。
src/vs/workbench/parts/terminal/electron-browser/terminalActions.ts
浏览文件 @
940acc1e
...
...
@@ -8,7 +8,7 @@ import * as os from 'os';
import
{
Action
,
IAction
}
from
'
vs/base/common/actions
'
;
import
{
EndOfLinePreference
}
from
'
vs/editor/common/model
'
;
import
{
ICodeEditorService
}
from
'
vs/editor/browser/services/codeEditorService
'
;
import
{
ITerminalService
,
TERMINAL_PANEL_ID
,
ITerminalInstance
,
Direction
,
I
ShellLaunchConfig
,
I
TerminalConfigHelper
}
from
'
vs/workbench/parts/terminal/common/terminal
'
;
import
{
ITerminalService
,
TERMINAL_PANEL_ID
,
ITerminalInstance
,
Direction
,
ITerminalConfigHelper
}
from
'
vs/workbench/parts/terminal/common/terminal
'
;
import
{
SelectActionItem
}
from
'
vs/base/browser/ui/actionbar/actionbar
'
;
import
{
TogglePanelAction
}
from
'
vs/workbench/browser/panel
'
;
import
{
IPartService
}
from
'
vs/workbench/services/part/common/partService
'
;
...
...
@@ -22,7 +22,7 @@ import { TerminalEntry } from 'vs/workbench/parts/terminal/browser/terminalQuick
import
{
IInstantiationService
,
ServicesAccessor
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IContextViewService
}
from
'
vs/platform/contextview/browser/contextView
'
;
import
{
ICommandService
}
from
'
vs/platform/commands/common/commands
'
;
import
{
IWorkspaceContextService
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
IWorkspaceContextService
,
IWorkspaceFolder
}
from
'
vs/platform/workspace/common/workspace
'
;
import
{
PICK_WORKSPACE_FOLDER_COMMAND_ID
}
from
'
vs/workbench/browser/actions/workspaceCommands
'
;
import
{
INotificationService
}
from
'
vs/platform/notification/common/notification
'
;
import
{
TERMINAL_COMMAND_ID
}
from
'
vs/workbench/parts/terminal/common/terminalCommands
'
;
...
...
@@ -32,13 +32,26 @@ import { FindReplaceState } from 'vs/editor/contrib/find/findState';
export
const
TERMINAL_PICKER_PREFIX
=
'
term
'
;
function
getCwdForSplit
(
configHelper
:
ITerminalConfigHelper
,
instance
:
ITerminalInstance
):
Promise
<
string
>
{
function
getCwdForSplit
(
configHelper
:
ITerminalConfigHelper
,
instance
:
ITerminalInstance
,
folders
?:
IWorkspaceFolder
[],
commandService
?:
ICommandService
):
Promise
<
string
|
undefined
>
{
switch
(
configHelper
.
config
.
splitCwd
)
{
case
'
workspaceRoot
'
:
{
// allow default behavior
return
new
Promise
<
string
>
(
resolve
=>
{
resolve
(
''
);
});
// allow original behavior
let
pathPromise
:
Promise
<
string
>
=
Promise
.
resolve
(
''
);
if
(
folders
.
length
>
1
)
{
// Only choose a path when there's more than 1 folder
const
options
:
IPickOptions
<
IQuickPickItem
>
=
{
placeHolder
:
nls
.
localize
(
'
workbench.action.terminal.newWorkspacePlaceholder
'
,
"
Select current working directory for new terminal
"
)
};
pathPromise
=
commandService
.
executeCommand
(
PICK_WORKSPACE_FOLDER_COMMAND_ID
,
[
options
]).
then
(
workspace
=>
{
if
(
!
workspace
)
{
// Don't split the instance if the workspace picker was canceled
return
undefined
;
}
return
Promise
.
resolve
(
workspace
.
uri
.
fsPath
);
});
}
return
pathPromise
;
}
case
'
sourceInitialCwd
'
:
{
return
new
Promise
<
string
>
(
resolve
=>
{
...
...
@@ -372,32 +385,13 @@ export class SplitTerminalAction extends Action {
return
Promise
.
resolve
(
void
0
);
}
const
folders
=
this
.
workspaceContextService
.
getWorkspace
().
folders
;
let
pathPromise
:
Promise
<
IShellLaunchConfig
>
=
Promise
.
resolve
({});
if
(
folders
.
length
>
1
)
{
// Only choose a path when there's more than 1 folder
const
options
:
IPickOptions
<
IQuickPickItem
>
=
{
placeHolder
:
nls
.
localize
(
'
workbench.action.terminal.newWorkspacePlaceholder
'
,
"
Select current working directory for new terminal
"
)
};
pathPromise
=
this
.
commandService
.
executeCommand
(
PICK_WORKSPACE_FOLDER_COMMAND_ID
,
[
options
]).
then
(
workspace
=>
{
if
(
!
workspace
)
{
// Don't split the instance if the workspace picker was canceled
return
null
;
}
return
Promise
.
resolve
({
cwd
:
workspace
.
uri
.
fsPath
});
});
}
return
pathPromise
.
then
(
path
=>
{
if
(
!
path
)
{
return
Promise
.
resolve
(
void
0
);
}
return
getCwdForSplit
(
this
.
_terminalService
.
configHelper
,
instance
).
then
(
cwd
=>
{
path
.
cwd
=
cwd
;
this
.
_terminalService
.
splitInstance
(
instance
,
path
);
return
getCwdForSplit
(
this
.
_terminalService
.
configHelper
,
instance
,
this
.
workspaceContextService
.
getWorkspace
().
folders
,
this
.
commandService
).
then
(
cwd
=>
{
if
(
cwd
)
{
this
.
_terminalService
.
splitInstance
(
instance
,
{
cwd
});
return
this
.
_terminalService
.
showPanel
(
true
);
});
}
else
{
return
undefined
;
}
});
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录