Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
掘金者说
vscode
提交
c186d378
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,发现更多精彩内容 >>
提交
c186d378
编写于
7月 27, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Settings editor - ... fix measuring around links, relayout
上级
d773878e
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
37 addition
and
25 deletion
+37
-25
src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css
...bench/parts/preferences/browser/media/settingsEditor2.css
+1
-1
src/vs/workbench/parts/preferences/browser/settingsEditor2.ts
...vs/workbench/parts/preferences/browser/settingsEditor2.ts
+5
-0
src/vs/workbench/parts/preferences/browser/settingsTree.ts
src/vs/workbench/parts/preferences/browser/settingsTree.ts
+31
-24
未找到文件。
src/vs/workbench/parts/preferences/browser/media/settingsEditor2.css
浏览文件 @
c186d378
...
...
@@ -224,7 +224,7 @@
display
:
block
;
position
:
absolute
;
left
:
7px
;
top
:
2
px
;
top
:
0
px
;
opacity
:
.9
;
}
...
...
src/vs/workbench/parts/preferences/browser/settingsEditor2.ts
浏览文件 @
c186d378
...
...
@@ -86,6 +86,8 @@ export class SettingsEditor2 extends BaseEditor {
private
tagRegex
=
/
(
^|
\s)
@tag:
(
"
([^
"
]
*
)
"|
[^
"
]\S
*
)
/g
;
private
layoutDelayer
:
Delayer
<
void
>
;
/** Don't spam warnings */
private
hasWarnedMissingSettings
:
boolean
;
...
...
@@ -106,6 +108,7 @@ export class SettingsEditor2 extends BaseEditor {
this
.
localSearchDelayer
=
new
Delayer
(
100
);
this
.
remoteSearchThrottle
=
new
ThrottledDelayer
(
200
);
this
.
viewState
=
{
settingsTarget
:
ConfigurationTarget
.
USER
};
this
.
layoutDelayer
=
new
Delayer
(
100
);
this
.
settingUpdateDelayer
=
new
Delayer
<
void
>
(
500
);
...
...
@@ -150,6 +153,8 @@ export class SettingsEditor2 extends BaseEditor {
this
.
layoutTrees
(
dimension
);
DOM
.
toggleClass
(
this
.
rootElement
,
'
narrow
'
,
dimension
.
width
<
600
);
this
.
layoutDelayer
.
trigger
(()
=>
this
.
refreshTreeAndMaintainFocus
());
}
focus
():
void
{
...
...
src/vs/workbench/parts/preferences/browser/settingsTree.ts
浏览文件 @
c186d378
...
...
@@ -1053,12 +1053,15 @@ export class SettingsRenderer implements ITreeRenderer {
return
height
>
18
;
}
private
settingDescriptionFirstLine
(
tree
:
ITree
,
element
:
SettingsTreeSettingElement
):
number
{
const
fullDescription
=
element
.
description
;
private
settingDescriptionFirstLineLength
(
tree
:
ITree
,
element
:
SettingsTreeSettingElement
):
number
{
const
fullDescription
=
element
.
description
.
replace
(
/
\[(
.*
)\]\(
.*
\)
/
,
'
$1
'
)
.
split
(
'
\n
'
)[
0
];
// Add characters one at a time, measure the width. Start from some safe number.
// const startPos = Math.min(50, fullDescription.length - 1);
let
size
:
{
height
:
number
,
width
:
number
};
for
(
let
i
=
0
;
i
<
fullDescription
.
length
;)
{
for
(
let
i
=
10
;
i
<=
fullDescription
.
length
;)
{
let
description
=
fullDescription
.
substr
(
0
,
i
);
size
=
this
.
measureSettingDescription
(
tree
,
element
,
description
);
if
(
size
.
height
>
20
)
{
...
...
@@ -1068,11 +1071,7 @@ export class SettingsRenderer implements ITreeRenderer {
const
nextBreakMatch
=
fullDescription
.
slice
(
i
+
1
).
match
(
/
[\s
.,$
]
/
);
if
(
nextBreakMatch
)
{
if
(
nextBreakMatch
[
0
]
===
'
\n
'
)
{
return
size
.
width
;
}
else
{
i
=
nextBreakMatch
.
index
+
i
+
1
;
}
}
else
{
return
size
.
width
;
}
...
...
@@ -1099,7 +1098,7 @@ export class SettingsRenderer implements ITreeRenderer {
template
.
labelElement
.
title
=
titleTooltip
;
if
(
isExpandable
)
{
const
widthInFirstLine
=
this
.
settingDescriptionFirstLine
(
tree
,
element
);
const
widthInFirstLine
=
this
.
settingDescriptionFirstLine
Length
(
tree
,
element
);
template
.
expandIndicatorElement
.
style
.
left
=
(
widthInFirstLine
+
8
)
+
'
px
'
;
}
...
...
@@ -1138,13 +1137,15 @@ export class SettingsRenderer implements ITreeRenderer {
return
enumDescriptionText
;
}
private
renderDescription
(
text
:
string
,
template
:
ISettingItemTemplate
|
ISettingBoolItemTemplate
,
isSelected
:
boolean
):
void
{
private
renderDescription
(
text
:
string
,
template
:
ISettingItemTemplate
|
ISettingBoolItemTemplate
,
isSelected
:
boolean
,
measuring
=
false
):
void
{
// Rewrite `#editor.fontSize#` to link format
const
descriptionText
=
text
.
replace
(
/`#
(
.*
)
#`/g
,
(
match
,
settingName
)
=>
`[
\`
${
settingName
}
\`
](#
${
settingName
}
)`
);
const
renderedDescription
=
renderMarkdown
({
value
:
descriptionText
},
{
actionHandler
:
{
actionHandler
:
measuring
?
undefined
:
{
callback
:
(
content
:
string
)
=>
{
if
(
startsWith
(
content
,
'
#
'
))
{
this
.
_onDidClickSettingLink
.
fire
(
content
.
substr
(
1
));
...
...
@@ -1155,14 +1156,20 @@ export class SettingsRenderer implements ITreeRenderer {
disposeables
:
template
.
toDispose
}
});
if
(
!
measuring
)
{
cleanRenderedMarkdown
(
renderedDescription
);
}
renderedDescription
.
classList
.
add
(
'
setting-item-description-markdown
'
);
template
.
descriptionElement
.
innerHTML
=
''
;
template
.
descriptionElement
.
appendChild
(
renderedDescription
);
if
(
!
measuring
)
{
(
<
any
>
renderedDescription
.
querySelectorAll
(
'
a
'
)).
forEach
(
aElement
=>
{
aElement
.
tabIndex
=
isSelected
?
0
:
-
1
;
});
}
}
private
renderValue
(
element
:
SettingsTreeSettingElement
,
isSelected
:
boolean
,
templateId
:
string
,
template
:
ISettingItemTemplate
|
ISettingBoolItemTemplate
):
void
{
const
onChange
=
value
=>
this
.
_onDidChangeSetting
.
fire
({
key
:
element
.
setting
.
key
,
value
});
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录