Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
a354eb8b
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,发现更多精彩内容 >>
提交
a354eb8b
编写于
4月 12, 2020
作者:
D
Daniel Imms
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Rename to validated
上级
4da7703e
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
8 addition
and
26 deletion
+8
-26
src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts
...nch/contrib/terminal/browser/links/terminalLinkManager.ts
+4
-2
src/vs/workbench/contrib/terminal/browser/links/terminalValidatedLocalLinkProvider.ts
...minal/browser/links/terminalValidatedLocalLinkProvider.ts
+1
-21
src/vs/workbench/contrib/terminal/test/browser/links/terminalValidatedLocalLinkProvider.test.ts
.../browser/links/terminalValidatedLocalLinkProvider.test.ts
+3
-3
未找到文件。
src/vs/workbench/contrib/terminal/browser/links/terminalLinkManager.ts
浏览文件 @
a354eb8b
...
...
@@ -22,7 +22,7 @@ import { IMarkdownString, MarkdownString } from 'vs/base/common/htmlContent';
import
{
Emitter
,
Event
}
from
'
vs/base/common/event
'
;
import
{
ILogService
}
from
'
vs/platform/log/common/log
'
;
import
{
TerminalWebLinkProvider
}
from
'
vs/workbench/contrib/terminal/browser/links/terminalWebLinkProvider
'
;
import
{
Terminal
RegexLocalLinkProvider
}
from
'
vs/workbench/contrib/terminal/browser/links/terminalRegex
LocalLinkProvider
'
;
import
{
Terminal
ValidatedLocalLinkProvider
}
from
'
vs/workbench/contrib/terminal/browser/links/terminalValidated
LocalLinkProvider
'
;
const
pathPrefix
=
'
(
\\
.
\\
.?|
\\
~)
'
;
const
pathSeparatorClause
=
'
\\
/
'
;
...
...
@@ -83,6 +83,7 @@ export class TerminalLinkManager extends DisposableStore {
private
_linkMatchers
:
number
[]
=
[];
private
_webLinksAddon
:
ITerminalAddon
|
undefined
;
private
_linkProvider
:
IDisposable
|
undefined
;
private
_linkProvider2
:
IDisposable
|
undefined
;
private
_hasBeforeHandleLinkListeners
=
false
;
protected
static
_LINK_INTERCEPT_THRESHOLD
=
LINK_INTERCEPT_THRESHOLD
;
...
...
@@ -174,6 +175,7 @@ export class TerminalLinkManager extends DisposableStore {
this
.
registerLinkProvider
();
}
else
{
this
.
_linkProvider
?.
dispose
();
this
.
_linkProvider2
?.
dispose
();
this
.
_registerLinkMatchers
();
}
}
...
...
@@ -292,7 +294,7 @@ export class TerminalLinkManager extends DisposableStore {
this
.
_tooltipCallback
(
event
,
link
,
location
,
this
.
_handleLocalLink
.
bind
(
this
,
link
));
};
const
wrappedLinkActivateCallback
=
this
.
_wrapLinkHandler
(
this
.
_handleLocalLink
.
bind
(
this
));
this
.
_linkProvider
=
this
.
_xterm
.
registerLinkProvider
(
new
TerminalRegex
LocalLinkProvider
(
this
.
_xterm
,
this
.
_processManager
.
os
||
OS
,
wrappedLinkActivateCallback
,
tooltipLinkCallback
,
this
.
_leaveCallback
,
this
.
_validateLocalLink
.
bind
(
this
)));
this
.
_linkProvider
2
=
this
.
_xterm
.
registerLinkProvider
(
new
TerminalValidated
LocalLinkProvider
(
this
.
_xterm
,
this
.
_processManager
.
os
||
OS
,
wrappedLinkActivateCallback
,
tooltipLinkCallback
,
this
.
_leaveCallback
,
this
.
_validateLocalLink
.
bind
(
this
)));
}
protected
_wrapLinkHandler
(
handler
:
(
link
:
string
)
=>
void
):
XtermLinkMatcherHandler
{
...
...
src/vs/workbench/contrib/terminal/browser/links/terminal
Regex
LocalLinkProvider.ts
→
src/vs/workbench/contrib/terminal/browser/links/terminal
Validated
LocalLinkProvider.ts
浏览文件 @
a354eb8b
...
...
@@ -33,14 +33,7 @@ const lineAndColumnClause = [
'
(([^:
\\
s
\\
(
\\
)<>
\'\
"
\\
[
\\
]]*)(:(
\\
d+))?(:(
\\
d+))?)
'
// (file path):336, (file path):336:9
].
join
(
'
|
'
).
replace
(
/ /g
,
`[
${
'
\
u00A0
'
}
]`
);
// Changing any regex may effect this value, hence changes this as well if required.
// const winLineAndColumnMatchIndex = 12;
// const unixLineAndColumnMatchIndex = 11;
// Each line and column clause have 6 groups (ie no. of expressions in round brackets)
// const lineAndColumnClauseGroupCount = 6;
export
class
TerminalRegexLocalLinkProvider
implements
ILinkProvider
{
export
class
TerminalValidatedLocalLinkProvider
implements
ILinkProvider
{
constructor
(
private
readonly
_xterm
:
Terminal
,
private
readonly
_processOperatingSystem
:
OperatingSystem
,
...
...
@@ -139,17 +132,4 @@ export class TerminalRegexLocalLinkProvider implements ILinkProvider {
// Append line and column number regex
return
new
RegExp
(
`
${
baseLocalLinkClause
}
(
${
lineAndColumnClause
}
)`
);
}
// private _positionIsInRange(position: IBufferCellPosition, range: IBufferRange): boolean {
// if (position.y < range.start.y || position.y > range.end.y) {
// return false;
// }
// if (position.y === range.start.y && position.x < range.start.x) {
// return false;
// }
// if (position.y === range.end.y && position.x > range.end.x) {
// return false;
// }
// return true;
// }
}
src/vs/workbench/contrib/terminal/test/browser/links/terminal
Regex
LocalLinkProvider.test.ts
→
src/vs/workbench/contrib/terminal/test/browser/links/terminal
Validated
LocalLinkProvider.test.ts
浏览文件 @
a354eb8b
...
...
@@ -4,7 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
*
as
assert
from
'
assert
'
;
import
{
Terminal
RegexLocalLinkProvider
}
from
'
vs/workbench/contrib/terminal/browser/links/terminalRegex
LocalLinkProvider
'
;
import
{
Terminal
ValidatedLocalLinkProvider
}
from
'
vs/workbench/contrib/terminal/browser/links/terminalValidated
LocalLinkProvider
'
;
import
{
Terminal
,
ILink
,
IBufferRange
,
IBufferCellPosition
}
from
'
xterm
'
;
import
{
OperatingSystem
}
from
'
vs/base/common/platform
'
;
import
{
format
}
from
'
vs/base/common/strings
'
;
...
...
@@ -63,11 +63,11 @@ const supportedLinkFormats: LinkFormatInfo[] = [
{
urlFormat
:
'
{0}",{1}
'
,
line
:
'
5
'
}
];
suite
(
'
Workbench - Terminal
Regex
LocalLinkProvider
'
,
()
=>
{
suite
(
'
Workbench - Terminal
Validated
LocalLinkProvider
'
,
()
=>
{
async
function
assertLink
(
text
:
string
,
os
:
OperatingSystem
,
expected
:
{
text
:
string
,
range
:
[
number
,
number
][]
})
{
const
xterm
=
new
Terminal
();
// TODO: Test process manager
const
provider
=
new
Terminal
Regex
LocalLinkProvider
(
xterm
,
os
,
()
=>
{
},
()
=>
{
},
()
=>
{
},
(
_
,
cb
)
=>
{
cb
(
true
);
});
const
provider
=
new
Terminal
Validated
LocalLinkProvider
(
xterm
,
os
,
()
=>
{
},
()
=>
{
},
()
=>
{
},
(
_
,
cb
)
=>
{
cb
(
true
);
});
// Write the text and wait for the parser to finish
await
new
Promise
<
void
>
(
r
=>
xterm
.
write
(
text
,
r
));
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录