Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
88efd3de
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,发现更多精彩内容 >>
提交
88efd3de
编写于
11月 15, 2016
作者:
I
isidor
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
debug: do not massage values in model, each viewer decides on how to present whitespace
fixes #14729
上级
29f1beec
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
41 addition
and
17 deletion
+41
-17
src/vs/workbench/parts/debug/common/debugModel.ts
src/vs/workbench/parts/debug/common/debugModel.ts
+3
-7
src/vs/workbench/parts/debug/electron-browser/debugHover.ts
src/vs/workbench/parts/debug/electron-browser/debugHover.ts
+5
-1
src/vs/workbench/parts/debug/electron-browser/debugViewer.ts
src/vs/workbench/parts/debug/electron-browser/debugViewer.ts
+25
-7
src/vs/workbench/parts/debug/electron-browser/replViewer.ts
src/vs/workbench/parts/debug/electron-browser/replViewer.ts
+8
-2
未找到文件。
src/vs/workbench/parts/debug/common/debugModel.ts
浏览文件 @
88efd3de
...
...
@@ -23,10 +23,6 @@ import { Source } from 'vs/workbench/parts/debug/common/debugSource';
const
MAX_REPL_LENGTH
=
10000
;
const
UNKNOWN_SOURCE_LABEL
=
nls
.
localize
(
'
unknownSource
'
,
"
Unknown Source
"
);
function
massageValue
(
value
:
string
):
string
{
return
value
?
value
.
replace
(
/
\n
/g
,
'
\\
n
'
).
replace
(
/
\r
/g
,
'
\\
r
'
).
replace
(
/
\t
/g
,
'
\\
t
'
)
:
value
;
}
export
class
OutputElement
implements
debug
.
ITreeElement
{
private
static
ID_COUNTER
=
0
;
...
...
@@ -67,7 +63,7 @@ export class KeyValueOutputElement extends OutputElement {
}
else
if
(
isObject
(
this
.
valueObj
))
{
return
'
Object
'
;
}
else
if
(
isString
(
this
.
valueObj
))
{
return
`"
${
massageValue
(
this
.
valueObj
)}
"`
;
return
this
.
valueObj
;
}
return
String
(
this
.
valueObj
)
||
''
;
...
...
@@ -170,7 +166,7 @@ export abstract class ExpressionContainer implements debug.IExpressionContainer
}
public
set
value
(
value
:
string
)
{
this
.
_value
=
massageValue
(
value
)
;
this
.
_value
=
value
;
this
.
valueChanged
=
ExpressionContainer
.
allValues
[
this
.
getId
()]
&&
ExpressionContainer
.
allValues
[
this
.
getId
()]
!==
Expression
.
DEFAULT_VALUE
&&
ExpressionContainer
.
allValues
[
this
.
getId
()]
!==
value
;
ExpressionContainer
.
allValues
[
this
.
getId
()]
=
value
;
...
...
@@ -248,7 +244,7 @@ export class Variable extends ExpressionContainer implements debug.IExpression {
startOfVariables
=
0
)
{
super
(
stackFrame
,
reference
,
`variable:
${
parent
.
getId
()}
:
${
name
}
:
${
reference
}
`
,
namedVariables
,
indexedVariables
,
startOfVariables
);
this
.
value
=
massageValue
(
value
)
;
this
.
value
=
value
;
}
public
get
evaluateName
():
string
{
...
...
src/vs/workbench/parts/debug/electron-browser/debugHover.ts
浏览文件 @
88efd3de
...
...
@@ -224,7 +224,11 @@ export class DebugHoverWidget implements IContentWidget {
if
(
!
expression
.
hasChildren
||
forceValueHover
)
{
this
.
complexValueContainer
.
hidden
=
true
;
this
.
valueContainer
.
hidden
=
false
;
renderExpressionValue
(
expression
,
this
.
valueContainer
,
false
,
MAX_VALUE_RENDER_LENGTH_IN_HOVER
);
renderExpressionValue
(
expression
,
this
.
valueContainer
,
{
showChanged
:
false
,
maxValueLength
:
MAX_VALUE_RENDER_LENGTH_IN_HOVER
,
preserveWhitespace
:
true
});
this
.
valueContainer
.
title
=
''
;
this
.
editor
.
layoutContentWidget
(
this
);
if
(
focus
)
{
...
...
src/vs/workbench/parts/debug/electron-browser/debugViewer.ts
浏览文件 @
88efd3de
...
...
@@ -37,7 +37,13 @@ const booleanRegex = /^true|false$/i;
const
stringRegex
=
/^
([
'"
])
.*
\1
$/
;
const
MAX_VALUE_RENDER_LENGTH_IN_VIEWLET
=
1024
;
export
function
renderExpressionValue
(
expressionOrValue
:
debug
.
IExpression
|
string
,
container
:
HTMLElement
,
showChanged
:
boolean
,
maxValueRenderLength
?:
number
):
void
{
export
interface
IRenderValueOptions
{
preserveWhitespace
:
boolean
;
showChanged
:
boolean
;
maxValueLength
?:
number
;
}
export
function
renderExpressionValue
(
expressionOrValue
:
debug
.
IExpression
|
string
,
container
:
HTMLElement
,
options
:
IRenderValueOptions
):
void
{
let
value
=
typeof
expressionOrValue
===
'
string
'
?
expressionOrValue
:
expressionOrValue
.
value
;
// remove stale classes
...
...
@@ -56,15 +62,19 @@ export function renderExpressionValue(expressionOrValue: debug.IExpression | str
dom
.
addClass
(
container
,
'
string
'
);
}
if
(
showChanged
&&
(
<
any
>
expressionOrValue
).
valueChanged
&&
value
!==
Expression
.
DEFAULT_VALUE
)
{
if
(
options
.
showChanged
&&
(
<
any
>
expressionOrValue
).
valueChanged
&&
value
!==
Expression
.
DEFAULT_VALUE
)
{
// value changed color has priority over other colors.
container
.
className
=
'
value changed
'
;
}
if
(
maxValueRenderLength
&&
value
.
length
>
maxValueRenderLength
)
{
value
=
value
.
substr
(
0
,
maxValueRenderLength
)
+
'
...
'
;
if
(
options
.
maxValueLength
&&
value
.
length
>
options
.
maxValueLength
)
{
value
=
value
.
substr
(
0
,
options
.
maxValueLength
)
+
'
...
'
;
}
if
(
value
&&
!
options
.
preserveWhitespace
)
{
container
.
textContent
=
value
.
replace
(
/
\n
/g
,
'
\\
n
'
).
replace
(
/
\r
/g
,
'
\\
r
'
).
replace
(
/
\t
/g
,
'
\\
t
'
);
}
else
{
container
.
textContent
=
value
;
}
container
.
textContent
=
value
;
container
.
title
=
value
;
}
...
...
@@ -76,7 +86,11 @@ export function renderVariable(tree: ITree, variable: Variable, data: IVariableT
if
(
variable
.
value
)
{
data
.
name
.
textContent
+=
'
:
'
;
renderExpressionValue
(
variable
,
data
.
value
,
showChanged
,
MAX_VALUE_RENDER_LENGTH_IN_VIEWLET
);
renderExpressionValue
(
variable
,
data
.
value
,
{
showChanged
,
maxValueLength
:
MAX_VALUE_RENDER_LENGTH_IN_VIEWLET
,
preserveWhitespace
:
false
});
data
.
value
.
title
=
variable
.
value
;
}
else
{
data
.
value
.
textContent
=
''
;
...
...
@@ -941,7 +955,11 @@ export class WatchExpressionsRenderer implements IRenderer {
data
.
name
.
textContent
=
watchExpression
.
name
;
if
(
watchExpression
.
value
)
{
data
.
name
.
textContent
+=
'
:
'
;
renderExpressionValue
(
watchExpression
,
data
.
value
,
true
,
MAX_VALUE_RENDER_LENGTH_IN_VIEWLET
);
renderExpressionValue
(
watchExpression
,
data
.
value
,
{
showChanged
:
true
,
maxValueLength
:
MAX_VALUE_RENDER_LENGTH_IN_VIEWLET
,
preserveWhitespace
:
false
});
data
.
name
.
title
=
watchExpression
.
type
?
watchExpression
.
type
:
watchExpression
.
value
;
}
}
...
...
src/vs/workbench/parts/debug/electron-browser/replViewer.ts
浏览文件 @
88efd3de
...
...
@@ -218,7 +218,10 @@ export class ReplExpressionsRenderer implements IRenderer {
private
renderInputOutputPair
(
tree
:
ITree
,
expression
:
debug
.
IExpression
,
templateData
:
IInputOutputPairTemplateData
):
void
{
templateData
.
input
.
textContent
=
expression
.
name
;
renderExpressionValue
(
expression
,
templateData
.
value
,
false
);
renderExpressionValue
(
expression
,
templateData
.
value
,
{
showChanged
:
false
,
preserveWhitespace
:
true
});
if
(
expression
.
hasChildren
)
{
templateData
.
annotation
.
className
=
'
annotation octicon octicon-info
'
;
templateData
.
annotation
.
title
=
nls
.
localize
(
'
stateCapture
'
,
"
Object state is captured from first evaluation
"
);
...
...
@@ -408,7 +411,10 @@ export class ReplExpressionsRenderer implements IRenderer {
}
// value
renderExpressionValue
(
output
.
value
,
templateData
.
value
,
false
);
renderExpressionValue
(
output
.
value
,
templateData
.
value
,
{
showChanged
:
false
,
preserveWhitespace
:
true
});
// annotation if any
if
(
output
.
annotation
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录