Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
cece28dc
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,发现更多精彩内容 >>
提交
cece28dc
编写于
1月 05, 2016
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debug: put a tree inside a hover
上级
d1ff2538
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
55 addition
and
49 deletion
+55
-49
src/vs/workbench/parts/debug/browser/debugEditorContribution.ts
.../workbench/parts/debug/browser/debugEditorContribution.ts
+1
-1
src/vs/workbench/parts/debug/browser/debugHoverWidget.ts
src/vs/workbench/parts/debug/browser/debugHoverWidget.ts
+34
-47
src/vs/workbench/parts/debug/browser/media/debug.contribution.css
...orkbench/parts/debug/browser/media/debug.contribution.css
+20
-1
未找到文件。
src/vs/workbench/parts/debug/browser/debugEditorContribution.ts
浏览文件 @
cece28dc
...
...
@@ -37,7 +37,7 @@ export class DebugEditorContribution implements editorcommon.IEditorContribution
)
{
this
.
breakpointHintDecoration
=
[];
this
.
toDispose
=
[];
this
.
hoverWidget
=
new
DebugHoverWidget
(
this
.
editor
,
this
.
debugService
);
this
.
hoverWidget
=
new
DebugHoverWidget
(
this
.
editor
,
this
.
debugService
,
this
.
instantiationService
);
this
.
registerListeners
();
}
...
...
src/vs/workbench/parts/debug/browser/debugHoverWidget.ts
浏览文件 @
cece28dc
...
...
@@ -6,13 +6,22 @@
import
htmlcontentrenderer
=
require
(
'
vs/base/browser/htmlContentRenderer
'
);
import
errors
=
require
(
'
vs/base/common/errors
'
);
import
dom
=
require
(
'
vs/base/browser/dom
'
);
import
{
ITree
}
from
'
vs/base/parts/tree/common/tree
'
;
import
{
Tree
}
from
'
vs/base/parts/tree/browser/treeImpl
'
;
import
{
DefaultController
,
ICancelableEvent
}
from
'
vs/base/parts/tree/browser/treeDefaults
'
;
import
editorbrowser
=
require
(
'
vs/editor/browser/editorBrowser
'
);
import
editorcommon
=
require
(
'
vs/editor/common/editorCommon
'
);
import
debug
=
require
(
'
vs/workbench/parts/debug/common/debug
'
);
import
{
tokenizeToHtmlContent
}
from
'
vs/editor/common/modes/textToHtmlTokenizer
'
;
import
{
IInstantiationService
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
debug
=
require
(
'
vs/workbench/parts/debug/common/debug
'
);
import
viewer
=
require
(
'
vs/workbench/parts/debug/browser/debugViewer
'
);
const
$
=
dom
.
emmet
;
const
stringRegex
=
/^
([
'"
])
.*
\1
$/
;
const
debugTreeOptions
=
{
indentPixels
:
8
,
twistiePixels
:
20
};
export
class
DebugHoverWidget
implements
editorbrowser
.
IContentWidget
{
...
...
@@ -22,12 +31,20 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget {
private
domNode
:
HTMLElement
;
private
isVisible
:
boolean
;
private
tree
:
ITree
;
private
showAtPosition
:
editorcommon
.
IPosition
;
private
lastHoveringOver
:
string
;
private
highlightDecorations
:
string
[];
constructor
(
private
editor
:
editorbrowser
.
ICodeEditor
,
private
debugService
:
debug
.
IDebugService
)
{
constructor
(
private
editor
:
editorbrowser
.
ICodeEditor
,
private
debugService
:
debug
.
IDebugService
,
private
instantiationService
:
IInstantiationService
)
{
this
.
domNode
=
$
(
'
.debug-hover-widget monaco-editor-background
'
);
const
treeContainer
=
dom
.
append
(
this
.
domNode
,
$
(
'
.debug-hover-tree
'
));
this
.
tree
=
new
Tree
(
treeContainer
,
{
dataSource
:
new
viewer
.
VariablesDataSource
(
this
.
debugService
),
renderer
:
this
.
instantiationService
.
createInstance
(
viewer
.
VariablesRenderer
),
controller
:
new
DebugHoverController
()
},
debugTreeOptions
);
this
.
isVisible
=
false
;
this
.
showAtPosition
=
null
;
this
.
lastHoveringOver
=
null
;
...
...
@@ -112,52 +129,9 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget {
}
private
doShow
(
position
:
editorcommon
.
IEditorPosition
,
expression
:
debug
.
IExpression
):
void
{
let
value
:
string
=
undefined
;
if
(
expression
.
reference
>
0
&&
expression
.
value
.
indexOf
(
'
function
'
)
===
-
1
)
{
let
objectToString
=
'
{
\n
'
;
expression
.
getChildren
(
this
.
debugService
).
then
(
children
=>
{
if
(
!
children
)
{
this
.
hide
();
return
;
}
for
(
let
i
=
0
;
i
<
children
.
length
;
i
++
)
{
const
nameAndValue
=
`
${
children
[
i
].
name
}
:
${
children
[
i
].
value
}
`
;
objectToString
+=
nameAndValue
.
substr
(
0
,
80
);
// add a quote to the end of the string if cropped
if
(
nameAndValue
.
length
>
80
&&
stringRegex
.
test
(
children
[
i
].
value
))
{
objectToString
+=
children
[
i
].
value
[
0
];
}
this
.
tree
.
setInput
(
expression
).
done
(
null
,
errors
.
onUnexpectedError
);
this
.
tree
.
layout
(
this
.
domNode
.
clientHeight
);
if
(
i
<
children
.
length
-
1
)
{
objectToString
+=
'
,
\n
'
;
}
}
objectToString
+=
'
\n
}
'
;
return
objectToString
;
}).
done
(
v
=>
value
=
v
,
()
=>
this
.
hide
());
}
else
{
value
=
expression
.
value
;
}
const
model
=
this
.
editor
.
getModel
();
if
(
!
value
||
!
model
)
{
return
;
}
let
crlfCount
=
0
;
for
(
let
i
=
0
;
i
<
value
.
length
;
i
++
)
{
if
(
value
[
i
]
===
'
\n
'
)
{
crlfCount
++
;
}
if
(
crlfCount
>
12
)
{
value
=
value
.
substr
(
0
,
i
+
1
)
+
'
...
\n
}
'
;
break
;
}
}
this
.
domNode
.
innerHTML
=
''
;
this
.
domNode
.
appendChild
(
htmlcontentrenderer
.
renderHtml
(
tokenizeToHtmlContent
(
value
,
model
.
getMode
())));
this
.
showAtPosition
=
position
;
this
.
isVisible
=
true
;
this
.
editor
.
layoutContentWidget
(
this
);
...
...
@@ -184,3 +158,16 @@ export class DebugHoverWidget implements editorbrowser.IContentWidget {
}
:
null
;
}
}
class
DebugHoverController
extends
DefaultController
{
/* protected */
public
onLeftClick
(
tree
:
ITree
,
element
:
any
,
eventish
:
ICancelableEvent
,
origin
:
string
=
'
mouse
'
):
boolean
{
if
(
element
.
reference
>
0
)
{
super
.
onLeftClick
(
tree
,
element
,
eventish
,
origin
);
tree
.
clearFocus
();
tree
.
deselect
(
element
);
}
return
true
;
}
}
src/vs/workbench/parts/debug/browser/media/debug.contribution.css
浏览文件 @
cece28dc
...
...
@@ -156,7 +156,8 @@
animation-name
:
fadeIn
;
white-space
:
pre
;
min-width
:
50px
;
width
:
350px
;
height
:
300px
;
-webkit-user-select
:
text
;
-ms-user-select
:
text
;
...
...
@@ -167,6 +168,24 @@
overflow
:
hidden
;
}
.monaco-editor
.debug-hover-widget
.debug-hover-tree
{
line-height
:
24px
;
height
:
100%
;
}
/* Disable tree hover highlight in debug hover tree. */
.monaco-editor
.debug-hover-widget
.debug-hover-tree
.monaco-tree
.monaco-tree-rows
>
.monaco-tree-row
:hover:not
(
.highlighted
)
:not
(
.selected
)
:not
(
.focused
)
{
background-color
:
inherit
;
}
.monaco-editor
.debug-hover-widget
.debug-hover-tree
.monaco-tree
.monaco-tree-rows
>
.monaco-tree-row
{
cursor
:
default
;
}
.monaco-editor
.debug-hover-widget
.debug-hover-tree
.monaco-tree
.monaco-tree-rows
>
.monaco-tree-row.has-children
{
cursor
:
pointer
;
}
.monaco-editor
.debug-hover-widget
pre
{
margin-top
:
0
;
margin-bottom
:
0
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录