Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
1a2701b1
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,发现更多精彩内容 >>
提交
1a2701b1
编写于
8月 26, 2016
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debug hover: use regex matching for all hovers
fixes #10906
上级
6005c9b2
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
27 deletion
+9
-27
src/vs/workbench/parts/debug/electron-browser/debugHover.ts
src/vs/workbench/parts/debug/electron-browser/debugHover.ts
+9
-27
未找到文件。
src/vs/workbench/parts/debug/electron-browser/debugHover.ts
浏览文件 @
1a2701b1
...
...
@@ -148,34 +148,20 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget {
public
showAt
(
range
:
Range
,
hoveringOver
:
string
,
focus
:
boolean
):
TPromise
<
void
>
{
const
pos
=
range
.
getStartPosition
();
const
model
=
this
.
editor
.
getModel
();
const
focusedStackFrame
=
this
.
debugService
.
getViewModel
().
getFocusedStackFrame
();
if
(
!
hoveringOver
||
!
focusedStackFrame
||
(
focusedStackFrame
.
source
.
uri
.
toString
()
!==
model
.
uri
.
toString
()))
{
if
(
!
hoveringOver
||
!
focusedStackFrame
||
(
focusedStackFrame
.
source
.
uri
.
toString
()
!==
this
.
editor
.
getModel
()
.
uri
.
toString
()))
{
return
;
}
const
session
=
this
.
debugService
.
getActiveSession
();
const
canEvaluateForHovers
=
session
.
configuration
.
capabilities
.
supportsEvaluateForHovers
;
const
lineContent
=
this
.
editor
.
getModel
().
getLineContent
(
pos
.
lineNumber
);
const
expressionRange
=
this
.
getExactExpressionRange
(
lineContent
,
range
);
// use regex to extract the sub-expression #9821
const
matchingExpression
=
lineContent
.
substring
(
expressionRange
.
startColumn
-
1
,
expressionRange
.
endColumn
);
const
lineContent
=
model
.
getLineContent
(
pos
.
lineNumber
);
let
evaluatedExpression
=
undefined
;
let
matchingExpression
=
undefined
;
let
startOffset
=
0
;
if
(
canEvaluateForHovers
)
{
// use regex to extract the sub-expression #9821
let
expressionRange
=
this
.
getExactExpressionRange
(
lineContent
,
range
);
startOffset
=
expressionRange
.
startColumn
;
matchingExpression
=
lineContent
.
substring
(
expressionRange
.
startColumn
-
1
,
expressionRange
.
endColumn
);
evaluatedExpression
=
evaluateExpression
(
session
,
focusedStackFrame
,
new
Expression
(
matchingExpression
,
true
),
'
hover
'
);
}
else
{
// string magic to get the parents of the variable (a and b for a.b.foo)
const
namesToFind
=
lineContent
.
substring
(
0
,
lineContent
.
indexOf
(
'
.
'
+
hoveringOver
))
.
split
(
'
.
'
).
map
(
word
=>
word
.
trim
()).
filter
(
word
=>
!!
word
);
namesToFind
.
push
(
hoveringOver
);
namesToFind
[
0
]
=
namesToFind
[
0
].
substring
(
namesToFind
[
0
].
lastIndexOf
(
'
'
)
+
1
);
evaluatedExpression
=
this
.
findExpressionInStackFrame
(
namesToFind
);
}
const
evaluatedExpression
=
session
.
configuration
.
capabilities
.
supportsEvaluateForHovers
?
evaluateExpression
(
session
,
focusedStackFrame
,
new
Expression
(
matchingExpression
,
true
),
'
hover
'
)
:
this
.
findExpressionInStackFrame
(
matchingExpression
.
split
(
'
.
'
).
map
(
word
=>
word
.
trim
()).
filter
(
word
=>
!!
word
));
return
evaluatedExpression
.
then
(
expression
=>
{
if
(
!
expression
||
!
expression
.
available
)
{
...
...
@@ -183,12 +169,8 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget {
return
;
}
const
hoverRange
=
canEvaluateForHovers
?
new
Range
(
pos
.
lineNumber
,
startOffset
,
pos
.
lineNumber
,
startOffset
+
matchingExpression
.
length
)
:
new
Range
(
pos
.
lineNumber
,
lineContent
.
indexOf
(
hoveringOver
)
+
1
,
pos
.
lineNumber
,
lineContent
.
indexOf
(
hoveringOver
)
+
1
+
hoveringOver
.
length
);
this
.
highlightDecorations
=
this
.
editor
.
deltaDecorations
(
this
.
highlightDecorations
,
[{
range
:
hoverRange
,
range
:
new
Range
(
pos
.
lineNumber
,
expressionRange
.
startColumn
,
pos
.
lineNumber
,
expressionRange
.
startColumn
+
matchingExpression
.
length
)
,
options
:
{
className
:
'
hoverHighlight
'
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录