Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
ef2bdc08
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,发现更多精彩内容 >>
提交
ef2bdc08
编写于
3月 02, 2017
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make custom terminal links higher priority than generic local link
Fixes #21637
上级
6ebf1223
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
22 addition
and
7 deletion
+22
-7
src/vs/workbench/parts/terminal/common/terminal.ts
src/vs/workbench/parts/terminal/common/terminal.ts
+3
-1
src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts
...bench/parts/terminal/electron-browser/terminalInstance.ts
+2
-2
src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts
...ch/parts/terminal/electron-browser/terminalLinkHandler.ts
+17
-4
未找到文件。
src/vs/workbench/parts/terminal/common/terminal.ts
浏览文件 @
ef2bdc08
...
@@ -184,9 +184,11 @@ export interface ITerminalInstance {
...
@@ -184,9 +184,11 @@ export interface ITerminalInstance {
* @param handler The callback when the link is called.
* @param handler The callback when the link is called.
* @param matchIndex The index of the link from the regex.match(html) call. This defaults to 0
* @param matchIndex The index of the link from the regex.match(html) call. This defaults to 0
* (for regular expressions without capture groups).
* (for regular expressions without capture groups).
* @param validationCallback A callback which can be used to validate the link after it has been
* added to the DOM.
* @return The ID of the new matcher, this can be used to deregister.
* @return The ID of the new matcher, this can be used to deregister.
*/
*/
registerLinkMatcher
(
regex
:
RegExp
,
handler
:
(
url
:
string
)
=>
void
,
matchIndex
?:
number
):
number
;
registerLinkMatcher
(
regex
:
RegExp
,
handler
:
(
url
:
string
)
=>
void
,
matchIndex
?:
number
,
validationCallback
?:
(
uri
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
)
=>
void
):
number
;
/**
/**
* Deregisters a link matcher if it has been registered.
* Deregisters a link matcher if it has been registered.
...
...
src/vs/workbench/parts/terminal/electron-browser/terminalInstance.ts
浏览文件 @
ef2bdc08
...
@@ -276,8 +276,8 @@ export class TerminalInstance implements ITerminalInstance {
...
@@ -276,8 +276,8 @@ export class TerminalInstance implements ITerminalInstance {
this
.
updateConfig
();
this
.
updateConfig
();
}
}
public
registerLinkMatcher
(
regex
:
RegExp
,
handler
:
(
url
:
string
)
=>
void
,
matchIndex
?:
number
):
number
{
public
registerLinkMatcher
(
regex
:
RegExp
,
handler
:
(
url
:
string
)
=>
void
,
matchIndex
?:
number
,
validationCallback
?:
(
uri
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
)
=>
void
):
number
{
return
this
.
_
xterm
.
registerLinkMatcher
(
regex
,
handler
,
matchIndex
);
return
this
.
_
linkHandler
.
registerCustomLinkHandler
(
this
.
_xterm
,
regex
,
handler
,
matchIndex
,
validationCallback
);
}
}
public
deregisterLinkMatcher
(
linkMatcherId
:
number
):
void
{
public
deregisterLinkMatcher
(
linkMatcherId
:
number
):
void
{
...
...
src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts
浏览文件 @
ef2bdc08
...
@@ -24,6 +24,11 @@ const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!$`&*()\\[\\]+\'":;]
...
@@ -24,6 +24,11 @@ const winExcludedPathCharactersClause = '[^\\0<>\\?\\|\\/\\s!$`&*()\\[\\]+\'":;]
/** A regex that matches paths in the form c:\path, ~\path, .\path */
/** A regex that matches paths in the form c:\path, ~\path, .\path */
const
WINDOWS_LOCAL_LINK_REGEX
=
new
RegExp
(
'
(
'
+
winPathPrefix
+
'
?(
'
+
winPathSeparatorClause
+
'
(
'
+
winExcludedPathCharactersClause
+
'
)+)+)
'
);
const
WINDOWS_LOCAL_LINK_REGEX
=
new
RegExp
(
'
(
'
+
winPathPrefix
+
'
?(
'
+
winPathSeparatorClause
+
'
(
'
+
winExcludedPathCharactersClause
+
'
)+)+)
'
);
/** Higher than local link, lower than hypertext */
const
CUSTOM_LINK_PRIORITY
=
-
1
;
/** Lowest */
const
LOCAL_LINK_PRIORITY
=
-
2
;
export
class
TerminalLinkHandler
{
export
class
TerminalLinkHandler
{
constructor
(
constructor
(
private
_platform
:
Platform
,
private
_platform
:
Platform
,
...
@@ -32,10 +37,19 @@ export class TerminalLinkHandler {
...
@@ -32,10 +37,19 @@ export class TerminalLinkHandler {
)
{
)
{
}
}
public
registerLocalLinkHandler
(
xterm
:
any
)
{
public
registerCustomLinkHandler
(
xterm
:
any
,
regex
:
RegExp
,
handler
:
(
string
)
=>
void
,
matchIndex
?:
number
,
validationCallback
?:
(
uri
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
)
=>
void
):
number
{
xterm
.
registerLinkMatcher
(
this
.
_localLinkRegex
,
(
url
)
=>
this
.
_handleLocalLink
(
url
),
{
return
xterm
.
registerLinkMatcher
(
regex
,
handler
,
{
matchIndex
,
validationCallback
,
priority
:
CUSTOM_LINK_PRIORITY
});
}
public
registerLocalLinkHandler
(
xterm
:
any
):
number
{
return
xterm
.
registerLinkMatcher
(
this
.
_localLinkRegex
,
(
url
)
=>
this
.
_handleLocalLink
(
url
),
{
matchIndex
:
1
,
matchIndex
:
1
,
validationCallback
:
(
link
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
)
=>
this
.
_validateLocalLink
(
link
,
callback
)
validationCallback
:
(
link
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
)
=>
this
.
_validateLocalLink
(
link
,
callback
),
priority
:
LOCAL_LINK_PRIORITY
});
});
}
}
...
@@ -57,7 +71,6 @@ export class TerminalLinkHandler {
...
@@ -57,7 +71,6 @@ export class TerminalLinkHandler {
}
}
private
_validateLocalLink
(
link
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
):
void
{
private
_validateLocalLink
(
link
:
string
,
callback
:
(
isValid
:
boolean
)
=>
void
):
void
{
console
.
log
(
'
validate
'
);
this
.
_resolvePath
(
link
).
then
(
resolvedLink
=>
{
this
.
_resolvePath
(
link
).
then
(
resolvedLink
=>
{
callback
(
!!
resolvedLink
);
callback
(
!!
resolvedLink
);
});
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录