Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
7941b1b0
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,发现更多精彩内容 >>
提交
7941b1b0
编写于
1月 17, 2018
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Show pref search result count badges for user and workspace settings
上级
69f9a3b8
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
123 addition
and
52 deletion
+123
-52
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
.../workbench/parts/preferences/browser/preferencesEditor.ts
+105
-52
src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts
...workbench/parts/preferences/browser/preferencesWidgets.ts
+18
-0
未找到文件。
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
浏览文件 @
7941b1b0
...
...
@@ -119,7 +119,6 @@ export class PreferencesEditor extends BaseEditor {
constructor
(
@
IPreferencesService
private
preferencesService
:
IPreferencesService
,
@
IPreferencesSearchService
private
preferencesSearchService
:
IPreferencesSearchService
,
@
ITelemetryService
telemetryService
:
ITelemetryService
,
@
IWorkbenchEditorService
private
editorService
:
IWorkbenchEditorService
,
@
IContextKeyService
private
contextKeyService
:
IContextKeyService
,
...
...
@@ -155,7 +154,7 @@ export class PreferencesEditor extends BaseEditor {
this
.
_register
(
this
.
sideBySidePreferencesWidget
.
onFocus
(()
=>
this
.
lastFocusedWidget
=
this
.
sideBySidePreferencesWidget
));
this
.
_register
(
this
.
sideBySidePreferencesWidget
.
onDidSettingsTargetChange
(
target
=>
this
.
switchSettings
(
target
)));
this
.
preferencesRenderers
=
this
.
_register
(
new
PreferencesRenderersController
(
this
.
preferencesSearchService
,
this
.
telemetryService
));
this
.
preferencesRenderers
=
this
.
_register
(
this
.
instantiationService
.
createInstance
(
PreferencesRenderersController
));
this
.
_register
(
this
.
preferencesRenderers
.
onDidFilterResultsCountChange
(
count
=>
this
.
showSearchResultsMessage
(
count
)));
}
...
...
@@ -286,17 +285,20 @@ export class PreferencesEditor extends BaseEditor {
});
}
private
showSearchResultsMessage
(
count
:
number
):
void
{
if
(
this
.
searchWidget
.
getValue
())
{
if
(
count
===
0
)
{
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
noSettingsFound
'
,
"
No Results
"
),
count
);
}
else
if
(
count
===
1
)
{
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
oneSettingFound
'
,
"
1 Setting Found
"
),
count
);
private
showSearchResultsMessage
(
count
:
IPreferencesCount
):
void
{
const
countValue
=
count
.
count
;
if
(
count
.
target
)
{
this
.
sideBySidePreferencesWidget
.
setResultCount
(
count
.
target
,
count
.
count
);
}
else
if
(
this
.
searchWidget
.
getValue
())
{
if
(
countValue
===
0
)
{
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
noSettingsFound
'
,
"
No Results
"
),
countValue
);
}
else
if
(
countValue
===
1
)
{
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
oneSettingFound
'
,
"
1 Setting Found
"
),
countValue
);
}
else
{
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
settingsFound
'
,
"
{0} Settings Found
"
,
count
),
count
);
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
settingsFound
'
,
"
{0} Settings Found
"
,
count
Value
),
countValue
);
}
}
else
{
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
totalSettingsMessage
'
,
"
Total {0} Settings
"
,
count
),
count
);
this
.
searchWidget
.
showMessage
(
nls
.
localize
(
'
totalSettingsMessage
'
,
"
Total {0} Settings
"
,
count
Value
),
countValue
);
}
}
...
...
@@ -365,6 +367,11 @@ interface IFilterOrSearchResult {
metadata
:
IStringDictionary
<
IFilterMetadata
>
;
}
interface
IPreferencesCount
{
target
?:
SettingsTarget
;
count
:
number
;
}
class
PreferencesRenderersController
extends
Disposable
{
private
_defaultPreferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
;
...
...
@@ -375,18 +382,20 @@ class PreferencesRenderersController extends Disposable {
private
_settingsNavigator
:
SettingsNavigator
;
private
_remoteFilterInProgress
:
TPromise
<
any
>
;
private
_prefsModelsForSearch
=
new
Map
<
SettingsTarget
,
ISettingsEditorModel
>
();
private
_currentLocalSearchProvider
:
ISearchProvider
;
private
_currentRemoteSearchProvider
:
ISearchProvider
;
private
_lastQuery
:
string
;
private
_lastFilterResult
:
IFilterOrSearchResult
;
private
_onDidFilterResultsCountChange
:
Emitter
<
number
>
=
this
.
_register
(
new
Emitter
<
number
>
());
public
onDidFilterResultsCountChange
:
Event
<
number
>
=
this
.
_onDidFilterResultsCountChange
.
event
;
private
_onDidFilterResultsCountChange
:
Emitter
<
IPreferencesCount
>
=
this
.
_register
(
new
Emitter
<
IPreferencesCount
>
());
public
onDidFilterResultsCountChange
:
Event
<
IPreferencesCount
>
=
this
.
_onDidFilterResultsCountChange
.
event
;
constructor
(
private
preferencesSearchService
:
IPreferencesSearchService
,
private
telemetryService
:
ITelemetryService
@
IPreferencesSearchService
private
preferencesSearchService
:
IPreferencesSearchService
,
@
ITelemetryService
private
telemetryService
:
ITelemetryService
,
@
IPreferencesService
private
preferencesService
:
IPreferencesService
,
)
{
super
();
}
...
...
@@ -468,6 +477,13 @@ class PreferencesRenderersController extends Disposable {
}
filterPs
.
push
(
this
.
_filterOrSearchPreferences
(
query
,
this
.
editablePreferencesRenderer
,
searchProvider
,
groupId
,
groupLabel
,
groupOrder
));
const
something
=
[
this
.
searchSettingsTarget
(
searchProvider
,
ConfigurationTarget
.
WORKSPACE
,
groupId
,
groupLabel
,
groupOrder
),
this
.
searchSettingsTarget
(
searchProvider
,
ConfigurationTarget
.
USER
,
groupId
,
groupLabel
,
groupOrder
)
];
// for (const folder of this.workspaceContextService.getWorkspace().folders) {
// const folderSettingsResource = this.preferencesService.getFolderSettingsResource(folder.uri);
return
TPromise
.
join
(
filterPs
).
then
(
results
=>
{
const
[
defaultFilterResult
,
editableFilterResult
]
=
results
;
...
...
@@ -482,6 +498,34 @@ class PreferencesRenderersController extends Disposable {
});
}
private
searchSettingsTarget
(
provider
:
ISearchProvider
,
target
:
SettingsTarget
,
groupId
:
string
,
groupLabel
:
string
,
groupOrder
:
number
):
TPromise
<
void
>
{
return
this
.
getPreferencesEditorModel
(
target
).
then
(
model
=>
{
return
this
.
_filterOrSearchPreferencesModel
(
''
,
<
ISettingsEditorModel
>
model
,
provider
,
groupId
,
groupLabel
,
groupOrder
);
}).
then
(
result
=>
{
const
count
=
result
?
this
.
_flatten
(
result
.
filteredGroups
).
length
:
0
;
this
.
_onDidFilterResultsCountChange
.
fire
({
target
,
count
});
},
err
=>
{
if
(
!
isPromiseCanceledError
(
err
))
{
return
TPromise
.
wrapError
(
err
);
}
return
null
;
});
}
private
async
getPreferencesEditorModel
(
target
:
SettingsTarget
):
TPromise
<
ISettingsEditorModel
>
{
const
resource
=
target
===
ConfigurationTarget
.
USER
?
this
.
preferencesService
.
userSettingsResource
:
target
===
ConfigurationTarget
.
WORKSPACE
?
this
.
preferencesService
.
workspaceSettingsResource
:
target
;
if
(
!
this
.
_prefsModelsForSearch
.
has
(
target
))
{
const
model
=
await
this
.
preferencesService
.
createPreferencesEditorModel
(
resource
);
this
.
_prefsModelsForSearch
.
set
(
target
,
<
ISettingsEditorModel
>
model
);
}
return
this
.
_prefsModelsForSearch
.
get
(
target
);
}
focusNextPreference
(
forward
:
boolean
=
true
)
{
if
(
!
this
.
_settingsNavigator
)
{
return
;
...
...
@@ -507,48 +551,53 @@ class PreferencesRenderersController extends Disposable {
private
_filterOrSearchPreferences
(
filter
:
string
,
preferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
,
provider
:
ISearchProvider
,
groupId
:
string
,
groupLabel
:
string
,
groupOrder
:
number
):
TPromise
<
IFilterResult
>
{
if
(
preferencesRenderer
)
{
const
model
=
<
ISettingsEditorModel
>
preferencesRenderer
.
preferencesModel
;
const
searchP
=
provider
?
provider
.
searchModel
(
model
)
:
TPromise
.
wrap
(
null
);
return
searchP
.
then
<
ISearchResult
>
(
null
,
err
=>
{
if
(
isPromiseCanceledError
(
err
))
{
return
TPromise
.
wrapError
(
err
);
}
else
{
/* __GDPR__
"defaultSettings.searchError" : {
"message": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
const
message
=
getErrorMessage
(
err
).
trim
();
if
(
message
)
{
// Empty message = any generic network error
this
.
telemetryService
.
publicLog
(
'
defaultSettings.searchError
'
,
{
message
});
}
return
null
;
}
})
.
then
(
searchResult
=>
{
const
filterResult
=
searchResult
?
model
.
updateResultGroup
(
groupId
,
{
id
:
groupId
,
label
:
groupLabel
,
result
:
searchResult
,
order
:
groupOrder
})
:
model
.
updateResultGroup
(
groupId
,
null
);
if
(
filterResult
)
{
filterResult
.
query
=
filter
;
}
preferencesRenderer
.
filterPreferences
(
filterResult
);
return
filterResult
;
});
return
this
.
_filterOrSearchPreferencesModel
(
filter
,
model
,
provider
,
groupId
,
groupLabel
,
groupOrder
).
then
(
filterResult
=>
{
preferencesRenderer
.
filterPreferences
(
filterResult
);
return
filterResult
;
});
}
return
TPromise
.
wrap
(
null
);
}
private
_filterOrSearchPreferencesModel
(
filter
:
string
,
model
:
ISettingsEditorModel
,
provider
:
ISearchProvider
,
groupId
:
string
,
groupLabel
:
string
,
groupOrder
:
number
):
TPromise
<
IFilterResult
>
{
const
searchP
=
provider
?
provider
.
searchModel
(
model
)
:
TPromise
.
wrap
(
null
);
return
searchP
.
then
<
ISearchResult
>
(
null
,
err
=>
{
if
(
isPromiseCanceledError
(
err
))
{
return
TPromise
.
wrapError
(
err
);
}
else
{
/* __GDPR__
"defaultSettings.searchError" : {
"message": { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
const
message
=
getErrorMessage
(
err
).
trim
();
if
(
message
)
{
// Empty message = any generic network error
this
.
telemetryService
.
publicLog
(
'
defaultSettings.searchError
'
,
{
message
});
}
return
null
;
}
})
.
then
(
searchResult
=>
{
const
filterResult
=
searchResult
?
model
.
updateResultGroup
(
groupId
,
{
id
:
groupId
,
label
:
groupLabel
,
result
:
searchResult
,
order
:
groupOrder
})
:
model
.
updateResultGroup
(
groupId
,
null
);
if
(
filterResult
)
{
filterResult
.
query
=
filter
;
}
return
filterResult
;
});
}
private
consolidateAndUpdate
(
defaultFilterResult
:
IFilterResult
,
editableFilterResult
:
IFilterResult
):
void
{
const
defaultPreferencesFilteredGroups
=
defaultFilterResult
?
defaultFilterResult
.
filteredGroups
:
this
.
_getAllPreferences
(
this
.
_defaultPreferencesRenderer
);
const
editablePreferencesFilteredGroups
=
editableFilterResult
?
editableFilterResult
.
filteredGroups
:
this
.
_getAllPreferences
(
this
.
_editablePreferencesRenderer
);
...
...
@@ -556,7 +605,7 @@ class PreferencesRenderersController extends Disposable {
this
.
_settingsNavigator
=
new
SettingsNavigator
(
this
.
_lastQuery
?
consolidatedSettings
:
[]);
const
totalCount
=
consolidatedSettings
.
length
;
this
.
_onDidFilterResultsCountChange
.
fire
(
totalCount
);
this
.
_onDidFilterResultsCountChange
.
fire
(
{
count
:
totalCount
}
);
}
private
_getAllPreferences
(
preferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
):
ISettingsGroup
[]
{
...
...
@@ -705,6 +754,10 @@ class SideBySidePreferencesWidget extends Widget {
});
}
public
setResultCount
(
settingsTarget
:
SettingsTarget
,
count
:
number
):
void
{
this
.
settingsTargetsWidget
.
setResultCount
(
settingsTarget
,
count
);
}
public
layout
(
dimension
:
Dimension
):
void
{
this
.
dimension
=
dimension
;
this
.
sash
.
setDimenesion
(
this
.
dimension
);
...
...
src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts
浏览文件 @
7941b1b0
...
...
@@ -492,6 +492,24 @@ export class SettingsTargetsWidget extends Widget {
}
}
public
setResultCount
(
settingsTarget
:
SettingsTarget
,
count
:
number
):
void
{
if
(
settingsTarget
===
ConfigurationTarget
.
WORKSPACE
)
{
let
label
=
localize
(
'
workspaceSettings
'
,
"
Workspace Settings
"
);
if
(
count
)
{
label
+=
` (
${
count
}
)`
;
}
this
.
workspaceSettings
.
label
=
label
;
}
else
if
(
settingsTarget
===
ConfigurationTarget
.
USER
)
{
let
label
=
localize
(
'
userSettings
'
,
"
User Settings
"
);
if
(
count
)
{
label
+=
` (
${
count
}
)`
;
}
this
.
userSettings
.
label
=
label
;
}
}
private
onWorkbenchStateChanged
():
void
{
this
.
folderSettings
.
folder
=
null
;
this
.
update
();
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录