Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
徽霖
Vscode
提交
0913cd5b
V
Vscode
项目概览
徽霖
/
Vscode
通知
9
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,发现更多精彩内容 >>
提交
0913cd5b
编写于
5月 31, 2017
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make terminal path dragging more robust
Fixes #27511
上级
d23b97b4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
14 deletion
+17
-14
src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts
...orkbench/parts/terminal/electron-browser/terminalPanel.ts
+17
-14
未找到文件。
src/vs/workbench/parts/terminal/electron-browser/terminalPanel.ts
浏览文件 @
0913cd5b
...
...
@@ -216,19 +216,20 @@ export class TerminalPanel extends Panel {
}
// Check if the file was dragged from the tree explorer
let
url
=
e
.
dataTransfer
.
getData
(
'
URL
'
);
if
(
!
url
&&
e
.
dataTransfer
.
files
.
length
>
0
)
{
let
uri
=
e
.
dataTransfer
.
getData
(
'
URL
'
);
if
(
uri
)
{
uri
=
URI
.
parse
(
uri
).
path
;
}
else
if
(
e
.
dataTransfer
.
files
.
length
>
0
)
{
// Check if the file was dragged from the filesystem
ur
l
=
e
.
dataTransfer
.
files
[
0
]
.
path
;
ur
i
=
URI
.
file
(
e
.
dataTransfer
.
files
[
0
].
path
)
.
path
;
}
const
filePath
=
URI
.
parse
(
url
).
path
;
if
(
!
filePath
)
{
if
(
!
uri
)
{
return
;
}
const
terminal
=
this
.
_terminalService
.
getActiveInstance
();
terminal
.
sendText
(
this
.
_
wrapPathInQuotes
(
filePath
),
false
);
terminal
.
sendText
(
this
.
_
preparePathForTerminal
(
uri
),
false
);
}
}));
}
...
...
@@ -292,20 +293,22 @@ export class TerminalPanel extends Panel {
/**
* Adds quotes to a path if it contains whitespaces
*/
private
_
wrapPathInQuotes
(
path
:
string
)
{
private
_
preparePathForTerminal
(
path
:
string
)
{
if
(
platform
.
isWindows
)
{
if
(
/
\s
+/
.
test
(
path
))
{
return
`"
${
path
}
"`
;
}
return
path
;
}
const
charsToReplace
:
{
a
:
string
,
b
:
string
}[]
=
[
{
a
:
'
\\
'
,
b
:
'
\\\\
'
},
{
a
:
'
'
,
b
:
'
\\
'
},
{
a
:
'
\'
'
,
b
:
'
\\\'
'
},
{
a
:
'
"
'
,
b
:
'
\\
"
'
}
];
charsToReplace
.
forEach
(
chars
=>
path
=
path
.
replace
(
chars
.
a
,
chars
.
b
));
path
=
path
.
replace
(
/
(
%5C|
\\)
/g
,
'
\\\\
'
);
const
charsToEscape
=
[
'
'
,
'
\'
'
,
'
"
'
,
'
?
'
,
'
:
'
,
'
;
'
];
for
(
let
i
=
0
;
i
<
path
.
length
;
i
++
)
{
const
indexOfChar
=
charsToEscape
.
indexOf
(
path
.
charAt
(
i
));
if
(
indexOfChar
>=
0
)
{
path
=
`
${
path
.
substring
(
0
,
i
)}
\
\$
{path.charAt(i)}
${
path
.
substring
(
i
+
1
)}
`
;
i
++
;
// Skip char due to escape char being added
}
}
return
path
;
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录