Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
6710df44
V
vscode
项目概览
xxadev
/
vscode
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vscode
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
6710df44
编写于
9月 20, 2019
作者:
M
Matt Bierner
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Allow tunneling when clicking on links in the terminal
Fixes #76175
上级
93ba04b2
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
23 addition
and
6 deletion
+23
-6
src/vs/platform/opener/common/opener.ts
src/vs/platform/opener/common/opener.ts
+2
-2
src/vs/workbench/api/browser/mainThreadWindow.ts
src/vs/workbench/api/browser/mainThreadWindow.ts
+2
-2
src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts
...workbench/contrib/terminal/browser/terminalLinkHandler.ts
+1
-1
src/vs/workbench/electron-browser/window.ts
src/vs/workbench/electron-browser/window.ts
+18
-1
未找到文件。
src/vs/platform/opener/common/opener.ts
浏览文件 @
6710df44
...
...
@@ -10,7 +10,7 @@ import { IDisposable, Disposable } from 'vs/base/common/lifecycle';
export
const
IOpenerService
=
createDecorator
<
IOpenerService
>
(
'
openerService
'
);
type
OpenToSideOptions
=
{
readonly
openToSide
?:
boolean
};
type
OpenExternalOptions
=
{
readonly
openExternal
?:
boolean
};
type
OpenExternalOptions
=
{
readonly
openExternal
?:
boolean
;
readonly
allowTunneling
?:
boolean
};
export
type
OpenOptions
=
OpenToSideOptions
&
OpenExternalOptions
;
...
...
@@ -24,7 +24,7 @@ export interface IValidator {
}
export
interface
IExternalUriResolver
{
resolveExternalUri
(
resource
:
URI
):
Promise
<
URI
>
;
resolveExternalUri
(
resource
:
URI
,
options
?:
OpenOptions
):
Promise
<
URI
>
;
}
export
interface
IOpenerService
{
...
...
src/vs/workbench/api/browser/mainThreadWindow.ts
浏览文件 @
6710df44
...
...
@@ -47,8 +47,8 @@ export class MainThreadWindow implements MainThreadWindowShape {
}
async
$openUri
(
uriComponents
:
UriComponents
,
options
:
IOpenUriOptions
):
Promise
<
boolean
>
{
const
uri
=
await
this
.
resolveExternalUri
(
URI
.
from
(
uriComponents
),
option
s
);
return
this
.
openerService
.
open
(
uri
,
{
openExternal
:
true
});
const
uri
=
URI
.
from
(
uriComponent
s
);
return
this
.
openerService
.
open
(
uri
,
{
openExternal
:
true
,
allowTunneling
:
options
.
allowTunneling
});
}
async
$resolveExternalUri
(
uriComponents
:
UriComponents
,
options
:
IOpenUriOptions
):
Promise
<
UriComponents
>
{
...
...
src/vs/workbench/contrib/terminal/browser/terminalLinkHandler.ts
浏览文件 @
6710df44
...
...
@@ -238,7 +238,7 @@ export class TerminalLinkHandler {
private
_handleHypertextLink
(
url
:
string
):
void
{
const
uri
=
URI
.
parse
(
url
);
this
.
_openerService
.
open
(
uri
);
this
.
_openerService
.
open
(
uri
,
{
allowTunneling
:
!!
(
this
.
_processManager
&&
this
.
_processManager
.
remoteAuthority
)
}
);
}
private
_isLinkActivationModifierDown
(
event
:
MouseEvent
):
boolean
{
...
...
src/vs/workbench/electron-browser/window.ts
浏览文件 @
6710df44
...
...
@@ -58,6 +58,7 @@ import { Schemas } from 'vs/base/common/network';
import
{
IElectronService
}
from
'
vs/platform/electron/node/electron
'
;
import
{
posix
,
dirname
}
from
'
vs/base/common/path
'
;
import
{
getBaseLabel
}
from
'
vs/base/common/labels
'
;
import
{
ITunnelService
,
extractLocalHostUriMetaDataForPortMapping
}
from
'
vs/platform/remote/common/tunnel
'
;
const
TextInputActions
:
IAction
[]
=
[
new
Action
(
'
undo
'
,
nls
.
localize
(
'
undo
'
,
"
Undo
"
),
undefined
,
true
,
()
=>
Promise
.
resolve
(
document
.
execCommand
(
'
undo
'
))),
...
...
@@ -108,7 +109,8 @@ export class ElectronWindow extends Disposable {
@
ITextFileService
private
readonly
textFileService
:
ITextFileService
,
@
IInstantiationService
private
readonly
instantiationService
:
IInstantiationService
,
@
IOpenerService
private
readonly
openerService
:
IOpenerService
,
@
IElectronService
private
readonly
electronService
:
IElectronService
@
IElectronService
private
readonly
electronService
:
IElectronService
,
@
ITunnelService
private
readonly
tunnelService
:
ITunnelService
,
)
{
super
();
...
...
@@ -435,6 +437,21 @@ export class ElectronWindow extends Disposable {
return
false
;
// not handled by us
}
});
this
.
openerService
.
registerExternalUriResolver
({
resolveExternalUri
:
async
(
uri
:
URI
,
options
?:
OpenOptions
):
Promise
<
URI
>
=>
{
if
(
options
&&
options
.
allowTunneling
)
{
const
portMappingRequest
=
extractLocalHostUriMetaDataForPortMapping
(
uri
);
if
(
portMappingRequest
)
{
const
tunnel
=
await
this
.
tunnelService
.
openTunnel
(
portMappingRequest
.
port
);
if
(
tunnel
)
{
return
uri
.
with
({
authority
:
`127.0.0.1:
${
tunnel
.
tunnelLocalPort
}
`
});
}
}
}
return
uri
;
}
});
}
private
shouldOpenExternal
(
resource
:
URI
,
options
?:
OpenOptions
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录