Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
267f7c6d
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,发现更多精彩内容 >>
提交
267f7c6d
编写于
10月 17, 2017
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add fuzzy toggle button and correctly hide ranges for most relevant section
上级
e25820fe
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
58 addition
and
15 deletion
+58
-15
src/vs/workbench/parts/preferences/browser/media/preferences.css
...workbench/parts/preferences/browser/media/preferences.css
+19
-3
src/vs/workbench/parts/preferences/browser/media/regex-dark.svg
.../workbench/parts/preferences/browser/media/regex-dark.svg
+1
-0
src/vs/workbench/parts/preferences/browser/media/regex.svg
src/vs/workbench/parts/preferences/browser/media/regex.svg
+1
-0
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
.../workbench/parts/preferences/browser/preferencesEditor.ts
+4
-4
src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts
...rkbench/parts/preferences/browser/preferencesRenderers.ts
+4
-1
src/vs/workbench/parts/preferences/browser/preferencesSearch.ts
.../workbench/parts/preferences/browser/preferencesSearch.ts
+4
-4
src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts
...workbench/parts/preferences/browser/preferencesWidgets.ts
+25
-3
未找到文件。
src/vs/workbench/parts/preferences/browser/media/preferences.css
浏览文件 @
267f7c6d
...
...
@@ -73,18 +73,34 @@
padding-right
:
32px
;
}
.settings-header-widget
>
.settings-count-widget
{
.settings-header-widget
>
.settings-
search-controls
>
.settings-
count-widget
{
margin
:
6px
0px
;
padding
:
0px
8px
;
border-radius
:
2px
;
float
:
left
;
}
.settings-header-widget
>
.settings-search-controls
{
position
:
absolute
;
right
:
10px
;
border-radius
:
2px
;
}
.settings-header-widget
>
.settings-count-widget.hide
{
.settings-header-widget
>
.settings-
search-controls
>
.settings-
count-widget.hide
{
display
:
none
;
}
.settings-header-widget
>
.settings-search-controls
>
.prefs-fuzzy-search-toggle
{
margin
:
5px
3px
5px
0px
;
}
.vs
.settings-header-widget
>
.settings-search-controls
>
.prefs-fuzzy-search-toggle
{
background
:
url('regex.svg')
center
center
no-repeat
;
}
.vs-dark
.settings-header-widget
>
.settings-search-controls
>
.prefs-fuzzy-search-toggle
{
background
:
url('regex-dark.svg')
center
center
no-repeat
;
}
.settings-header-widget
>
.settings-search-container
{
flex
:
1
;
}
...
...
src/vs/workbench/parts/preferences/browser/media/regex-dark.svg
0 → 100644
浏览文件 @
267f7c6d
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"16"
height=
"16"
><polygon
fill=
"#2d2d30"
points=
"13.64,7.396 12.169,2.898 10.706,3.761 11.087,2 6.557,2 6.936,3.762 5.473,2.898 4,7.396 5.682,7.554 4.513,8.561 5.013,9 2,9 2,14 7,14 7,10.747 7.978,11.606 8.82,9.725 9.661,11.602 13.144,8.562 11.968,7.554"
/><g
fill=
"#C5C5C5"
><path
d=
"M12.301 6.518l-2.772.262 2.086 1.788-1.594 1.392-1.201-2.682-1.201 2.682-1.583-1.392 2.075-1.788-2.771-.262.696-2.126 2.358 1.392-.599-2.784h2.053l-.602 2.783 2.359-1.392.696 2.127z"
/><rect
x=
"3"
y=
"10"
width=
"3"
height=
"3"
/></g></svg>
\ No newline at end of file
src/vs/workbench/parts/preferences/browser/media/regex.svg
0 → 100644
浏览文件 @
267f7c6d
<svg
xmlns=
"http://www.w3.org/2000/svg"
width=
"16"
height=
"16"
><polygon
fill=
"#F6F6F6"
points=
"13.64,7.396 12.169,2.898 10.706,3.761 11.087,2 6.557,2 6.936,3.762 5.473,2.898 4,7.396 5.682,7.554 4.513,8.561 5.013,9 2,9 2,14 7,14 7,10.747 7.978,11.606 8.82,9.725 9.661,11.602 13.144,8.562 11.968,7.554"
/><g
fill=
"#424242"
><path
d=
"M12.301 6.518l-2.772.262 2.086 1.788-1.594 1.392-1.201-2.682-1.201 2.682-1.583-1.392 2.075-1.788-2.771-.262.696-2.126 2.358 1.392-.599-2.784h2.053l-.602 2.783 2.359-1.392.696 2.127z"
/><rect
x=
"3"
y=
"10"
width=
"3"
height=
"3"
/></g></svg>
\ No newline at end of file
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
浏览文件 @
267f7c6d
...
...
@@ -247,7 +247,7 @@ export class PreferencesEditor extends BaseEditor {
}
private
onInputChanged
():
void
{
if
(
this
.
search
Provider
.
remoteSearch
Enabled
)
{
if
(
this
.
search
Widget
.
fuzzy
Enabled
)
{
this
.
onInput
.
fire
();
}
else
{
this
.
filterPreferences
();
...
...
@@ -319,7 +319,7 @@ export class PreferencesEditor extends BaseEditor {
private
filterPreferences
()
{
const
filter
=
this
.
searchWidget
.
getValue
().
trim
();
this
.
preferencesRenderers
.
filterPreferences
(
filter
,
this
.
searchProvider
).
then
(
count
=>
{
this
.
preferencesRenderers
.
filterPreferences
(
filter
,
this
.
searchProvider
,
this
.
searchWidget
.
fuzzyEnabled
).
then
(
count
=>
{
const
message
=
filter
?
this
.
showSearchResultsMessage
(
count
)
:
nls
.
localize
(
'
totalSettingsMessage
'
,
"
Total {0} Settings
"
,
count
);
this
.
searchWidget
.
showMessage
(
message
,
count
);
if
(
count
===
0
)
{
...
...
@@ -426,14 +426,14 @@ class PreferencesRenderers extends Disposable {
this
.
_editablePreferencesRenderer
=
editableSettingsRenderer
;
}
public
filterPreferences
(
filter
:
string
,
searchProvider
:
PreferencesSearchProvider
):
TPromise
<
number
>
{
public
filterPreferences
(
filter
:
string
,
searchProvider
:
PreferencesSearchProvider
,
fuzzy
:
boolean
):
TPromise
<
number
>
{
if
(
this
.
_filtersInProgress
)
{
// Resolved/rejected promises have no .cancel()
this
.
_filtersInProgress
.
forEach
(
p
=>
p
.
cancel
&&
p
.
cancel
());
}
if
(
filter
)
{
const
searchModel
=
searchProvider
.
startSearch
(
filter
);
const
searchModel
=
searchProvider
.
startSearch
(
filter
,
fuzzy
);
this
.
_filtersInProgress
=
[
this
.
_filterPreferences
(
filter
,
searchModel
,
this
.
_defaultPreferencesRenderer
),
this
.
_filterPreferences
(
filter
,
searchModel
,
this
.
_editablePreferencesRenderer
)];
...
...
src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts
浏览文件 @
267f7c6d
...
...
@@ -563,7 +563,10 @@ export class MostRelevantMatchesRenderer extends Disposable implements HiddenAre
public
render
(
result
:
IFilterResult
):
void
{
if
(
result
&&
result
.
metadata
)
{
// TODO - Hide unused portion of most relevant results section
const
lineCount
=
this
.
editor
.
getModel
().
getLineCount
();
this
.
hiddenAreas
=
[
new
Range
(
DefaultSettingsEditorModel
.
MOST_RELEVANT_END_LINE
,
1
,
lineCount
-
1
,
1
)];
}
else
{
this
.
hiddenAreas
=
[
new
Range
(
DefaultSettingsEditorModel
.
MOST_RELEVANT_START_LINE
,
1
,
DefaultSettingsEditorModel
.
MOST_RELEVANT_END_LINE
,
1
)];
}
}
}
...
...
src/vs/workbench/parts/preferences/browser/preferencesSearch.ts
浏览文件 @
267f7c6d
...
...
@@ -23,8 +23,8 @@ export class PreferencesSearchProvider {
return
!!
this
.
configurationService
.
getConfiguration
<
IWorkbenchSettingsConfiguration
>
().
workbench
.
settings
.
useExperimentalRemoteSearch
;
}
startSearch
(
filter
:
string
):
PreferencesSearchModel
{
return
new
PreferencesSearchModel
(
this
,
filter
);
startSearch
(
filter
:
string
,
remote
:
boolean
):
PreferencesSearchModel
{
return
new
PreferencesSearchModel
(
this
,
filter
,
remote
);
}
}
...
...
@@ -32,10 +32,10 @@ export class PreferencesSearchModel {
private
_localProvider
:
LocalSearchProvider
;
private
_remoteProvider
:
RemoteSearchProvider
;
constructor
(
private
provider
:
PreferencesSearchProvider
,
filter
:
string
)
{
constructor
(
private
provider
:
PreferencesSearchProvider
,
filter
:
string
,
remote
:
boolean
)
{
this
.
_localProvider
=
new
LocalSearchProvider
(
filter
);
if
(
this
.
provider
.
remoteSearchEnabled
)
{
if
(
remote
)
{
this
.
_remoteProvider
=
new
RemoteSearchProvider
(
filter
);
}
}
...
...
src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts
浏览文件 @
267f7c6d
...
...
@@ -10,6 +10,7 @@ import * as DOM from 'vs/base/browser/dom';
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
{
Disposable
}
from
'
vs/base/common/lifecycle
'
;
import
{
Widget
}
from
'
vs/base/browser/ui/widget
'
;
import
{
Checkbox
}
from
'
vs/base/browser/ui/checkbox/checkbox
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
IKeyboardEvent
}
from
'
vs/base/browser/keyboardEvent
'
;
import
{
KeyCode
}
from
'
vs/base/common/keyCodes
'
;
...
...
@@ -399,6 +400,8 @@ export class SearchWidget extends Widget {
private
countElement
:
HTMLElement
;
private
searchContainer
:
HTMLElement
;
private
inputBox
:
InputBox
;
private
fuzzyToggle
:
Checkbox
;
private
controlsDiv
:
HTMLElement
;
private
_onDidChange
:
Emitter
<
string
>
=
this
.
_register
(
new
Emitter
<
string
>
());
public
readonly
onDidChange
:
Event
<
string
>
=
this
.
_onDidChange
.
event
;
...
...
@@ -416,10 +419,25 @@ export class SearchWidget extends Widget {
this
.
create
(
parent
);
}
public
get
fuzzyEnabled
():
boolean
{
return
this
.
fuzzyToggle
.
checked
;
}
private
create
(
parent
:
HTMLElement
)
{
this
.
domNode
=
DOM
.
append
(
parent
,
DOM
.
$
(
'
div.settings-header-widget
'
));
this
.
createSearchContainer
(
DOM
.
append
(
this
.
domNode
,
DOM
.
$
(
'
div.settings-search-container
'
)));
this
.
countElement
=
DOM
.
append
(
this
.
domNode
,
DOM
.
$
(
'
.settings-count-widget
'
));
this
.
controlsDiv
=
DOM
.
append
(
this
.
domNode
,
DOM
.
$
(
'
div.settings-search-controls
'
));
this
.
fuzzyToggle
=
this
.
_register
(
new
Checkbox
({
actionClassName
:
'
prefs-fuzzy-search-toggle
'
,
isChecked
:
false
,
onChange
:
()
=>
{
console
.
log
(
`onChange`
);
},
title
:
'
Enable experimental fuzzy search
'
}));
DOM
.
append
(
this
.
controlsDiv
,
this
.
fuzzyToggle
.
domNode
);
this
.
countElement
=
DOM
.
append
(
this
.
controlsDiv
,
DOM
.
$
(
'
.settings-count-widget
'
));
this
.
_register
(
attachStylerCallback
(
this
.
themeService
,
{
badgeBackground
,
contrastBorder
},
colors
=>
{
const
background
=
colors
.
badgeBackground
?
colors
.
badgeBackground
.
toString
()
:
null
;
const
border
=
colors
.
contrastBorder
?
colors
.
contrastBorder
.
toString
()
:
null
;
...
...
@@ -461,7 +479,7 @@ export class SearchWidget extends Widget {
this
.
countElement
.
textContent
=
message
;
this
.
inputBox
.
inputElement
.
setAttribute
(
'
aria-label
'
,
message
);
DOM
.
toggleClass
(
this
.
countElement
,
'
no-results
'
,
count
===
0
);
this
.
inputBox
.
inputElement
.
style
.
paddingRight
=
DOM
.
getTotalWidth
(
this
.
countElement
)
+
20
+
'
px
'
;
this
.
inputBox
.
inputElement
.
style
.
paddingRight
=
this
.
getControlsWidth
()
+
'
px
'
;
this
.
styleCountElementForeground
();
}
...
...
@@ -477,10 +495,14 @@ export class SearchWidget extends Widget {
this
.
inputBox
.
inputElement
.
style
.
paddingRight
=
'
0px
'
;
}
else
{
DOM
.
removeClass
(
this
.
countElement
,
'
hide
'
);
this
.
inputBox
.
inputElement
.
style
.
paddingRight
=
DOM
.
getTotalWidth
(
this
.
countElement
)
+
20
+
'
px
'
;
this
.
inputBox
.
inputElement
.
style
.
paddingRight
=
this
.
getControlsWidth
()
+
'
px
'
;
}
}
private
getControlsWidth
():
number
{
return
DOM
.
getTotalWidth
(
this
.
countElement
)
+
DOM
.
getTotalWidth
(
this
.
fuzzyToggle
.
domNode
)
+
20
;
}
public
focus
()
{
this
.
inputBox
.
focus
();
if
(
this
.
getValue
())
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录