Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
92e0f496
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,发现更多精彩内容 >>
提交
92e0f496
编写于
10月 19, 2017
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update settings to hold the endpoint and key, and remote the hardcoded endpoint details
上级
cd38c1e1
变更
8
隐藏空白更改
内联
并排
Showing
8 changed file
with
74 addition
and
32 deletion
+74
-32
src/vs/base/browser/ui/checkbox/checkbox.ts
src/vs/base/browser/ui/checkbox/checkbox.ts
+4
-0
src/vs/workbench/electron-browser/main.contribution.ts
src/vs/workbench/electron-browser/main.contribution.ts
+9
-4
src/vs/workbench/parts/preferences/browser/media/preferences.css
...workbench/parts/preferences/browser/media/preferences.css
+4
-0
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
.../workbench/parts/preferences/browser/preferencesEditor.ts
+7
-7
src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts
...rkbench/parts/preferences/browser/preferencesRenderers.ts
+5
-5
src/vs/workbench/parts/preferences/browser/preferencesSearch.ts
.../workbench/parts/preferences/browser/preferencesSearch.ts
+31
-14
src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts
...workbench/parts/preferences/browser/preferencesWidgets.ts
+11
-1
src/vs/workbench/parts/preferences/common/preferences.ts
src/vs/workbench/parts/preferences/common/preferences.ts
+3
-1
未找到文件。
src/vs/base/browser/ui/checkbox/checkbox.ts
浏览文件 @
92e0f496
...
...
@@ -73,6 +73,10 @@ export class Checkbox extends Widget {
});
}
public
get
enabled
():
boolean
{
return
this
.
domNode
.
getAttribute
(
'
aria-disabled
'
)
!==
'
true
'
;
}
public
focus
():
void
{
this
.
domNode
.
focus
();
}
...
...
src/vs/workbench/electron-browser/main.contribution.ts
浏览文件 @
92e0f496
...
...
@@ -197,10 +197,15 @@ let workbenchProperties: { [path: string]: IJSONSchema; } = {
'
description
'
:
nls
.
localize
(
'
openDefaultSettings
'
,
"
Controls if opening settings also opens an editor showing all default settings.
"
),
'
default
'
:
true
},
'
workbench.settings.useExperimentalRemoteSearch
'
:
{
'
type
'
:
'
boolean
'
,
'
description
'
:
nls
.
localize
(
'
useExperimentalRemoteSearch
'
,
"
Controls whether to use the experimetal remote search engine for settings search.
"
),
'
default
'
:
false
'
workbench.settings.experimentalFuzzySearchEndpoint
'
:
{
'
type
'
:
'
string
'
,
'
description
'
:
nls
.
localize
(
'
experimentalFuzzySearchEndpoint
'
,
"
Indicates the endpoint to use for the experimental settings search.
"
),
'
default
'
:
''
},
'
workbench.settings.experimentalFuzzySearchKey
'
:
{
'
type
'
:
'
string
'
,
'
description
'
:
nls
.
localize
(
'
experimentalFuzzySearchKey
'
,
"
Indicates the key to use for the experimental settings search.
"
),
'
default
'
:
''
},
'
workbench.sideBar.location
'
:
{
'
type
'
:
'
string
'
,
...
...
src/vs/workbench/parts/preferences/browser/media/preferences.css
浏览文件 @
92e0f496
...
...
@@ -93,6 +93,10 @@
margin
:
5px
3px
5px
0px
;
}
.settings-header-widget
>
.settings-search-controls
>
.prefs-fuzzy-search-toggle.hidden
{
display
:
none
;
}
.vs
.settings-header-widget
>
.settings-search-controls
>
.prefs-fuzzy-search-toggle
{
background
:
url('regex.svg')
center
center
no-repeat
;
}
...
...
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
浏览文件 @
92e0f496
...
...
@@ -144,6 +144,8 @@ export class PreferencesEditor extends BaseEditor {
placeholder
:
nls
.
localize
(
'
SearchSettingsWidget.Placeholder
'
,
"
Search Settings
"
),
focusKey
:
this
.
focusSettingsContextKey
}));
this
.
searchWidget
.
setFuzzyToggleVisible
(
this
.
searchProvider
.
remoteSearchEnabled
);
this
.
_register
(
this
.
searchProvider
.
onRemoteSearchEnablementChanged
(
enabled
=>
this
.
searchWidget
.
setFuzzyToggleVisible
(
enabled
)));
this
.
_register
(
this
.
searchWidget
.
onDidChange
(
value
=>
this
.
onInputChanged
()));
this
.
_register
(
this
.
searchWidget
.
onFocus
(()
=>
this
.
lastFocusedWidget
=
this
.
searchWidget
));
this
.
lastFocusedWidget
=
this
.
searchWidget
;
...
...
@@ -445,8 +447,8 @@ class PreferencesRenderers extends Disposable {
const
searchModel
=
searchProvider
.
startSearch
(
filter
,
fuzzy
);
this
.
_filtersInProgress
=
[
this
.
_filterPreferences
(
filter
,
searchModel
,
this
.
_defaultPreferencesRenderer
),
this
.
_filterPreferences
(
filter
,
searchModel
,
this
.
_editablePreferencesRenderer
)];
this
.
_filterPreferences
(
searchModel
,
searchProvider
,
this
.
_defaultPreferencesRenderer
),
this
.
_filterPreferences
(
searchModel
,
searchProvider
,
this
.
_editablePreferencesRenderer
)];
return
TPromise
.
join
<
IFilterResult
>
(
this
.
_filtersInProgress
).
then
(
filterResults
=>
{
this
.
_filtersInProgress
=
null
;
...
...
@@ -477,14 +479,12 @@ class PreferencesRenderers extends Disposable {
return
preferencesRenderer
?
(
<
ISettingsEditorModel
>
preferencesRenderer
.
preferencesModel
).
settingsGroups
:
[];
}
private
_filterPreferences
(
filter
:
string
,
searchModel
:
PreferencesSearchModel
,
preferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
):
TPromise
<
IFilterResult
>
{
private
_filterPreferences
(
searchModel
:
PreferencesSearchModel
,
searchProvider
:
PreferencesSearchProvider
,
preferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
):
TPromise
<
IFilterResult
>
{
if
(
preferencesRenderer
)
{
const
prefSearchP
=
filter
?
searchModel
.
filterPreferences
(
<
ISettingsEditorModel
>
preferencesRenderer
.
preferencesModel
)
:
TPromise
.
wrap
(
null
);
const
prefSearchP
=
searchModel
.
filterPreferences
(
<
ISettingsEditorModel
>
preferencesRenderer
.
preferencesModel
);
return
prefSearchP
.
then
(
filterResult
=>
{
preferencesRenderer
.
filterPreferences
(
filterResult
);
preferencesRenderer
.
filterPreferences
(
filterResult
,
searchProvider
.
remoteSearchEnabled
);
return
filterResult
;
});
}
...
...
src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts
浏览文件 @
92e0f496
...
...
@@ -45,7 +45,7 @@ export interface IPreferencesRenderer<T> extends IDisposable {
render
():
void
;
updatePreference
(
key
:
string
,
value
:
any
,
source
:
T
):
void
;
filterPreferences
(
filterResult
:
IFilterResult
):
void
;
filterPreferences
(
filterResult
:
IFilterResult
,
fuzzySearchAvailable
:
boolean
):
void
;
focusPreference
(
setting
:
T
):
void
;
clearFocus
(
setting
:
T
):
void
;
}
...
...
@@ -295,13 +295,13 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
this
.
hiddenAreasRenderer
.
render
();
}
public
filterPreferences
(
filterResult
:
IFilterResult
):
void
{
public
filterPreferences
(
filterResult
:
IFilterResult
,
fuzzySearchAvailable
:
boolean
):
void
{
this
.
filterResult
=
filterResult
;
if
(
filterResult
)
{
this
.
filteredMatchesRenderer
.
render
(
filterResult
,
this
.
preferencesModel
.
settingsGroups
);
this
.
settingsGroupTitleRenderer
.
render
(
filterResult
.
filteredGroups
);
this
.
feedbackWidgetRenderer
.
render
(
filterResult
);
this
.
settingsHeaderRenderer
.
render
(
filterResult
);
this
.
settingsHeaderRenderer
.
render
(
filterResult
,
fuzzySearchAvailable
);
this
.
settingHighlighter
.
clear
(
true
);
this
.
editSettingActionRenderer
.
render
(
filterResult
.
filteredGroups
,
this
.
_associatedPreferencesModel
);
}
else
{
...
...
@@ -424,9 +424,9 @@ class DefaultSettingsHeaderRenderer extends Disposable {
this
.
onClick
=
this
.
settingsHeaderWidget
.
onClick
;
}
public
render
(
filterResult
:
IFilterResult
)
{
public
render
(
filterResult
:
IFilterResult
,
fuzzySearchAvailable
=
false
)
{
const
hasSettings
=
!
filterResult
||
filterResult
.
filteredGroups
.
length
>
0
;
const
promptFuzzy
=
filterResult
&&
!
filterResult
.
metadata
;
const
promptFuzzy
=
f
uzzySearchAvailable
&&
f
ilterResult
&&
!
filterResult
.
metadata
;
this
.
settingsHeaderWidget
.
toggleMessage
(
hasSettings
,
promptFuzzy
);
}
}
...
...
src/vs/workbench/parts/preferences/browser/preferencesSearch.ts
浏览文件 @
92e0f496
...
...
@@ -4,6 +4,7 @@
*--------------------------------------------------------------------------------------------*/
import
{
TPromise
}
from
'
vs/base/common/winjs.base
'
;
import
Event
,
{
Emitter
}
from
'
vs/base/common/event
'
;
import
{
ISettingsEditorModel
,
IFilterResult
,
ISetting
,
ISettingsGroup
,
IWorkbenchSettingsConfiguration
,
IFilterMetadata
}
from
'
vs/workbench/parts/preferences/common/preferences
'
;
import
{
IRange
,
Range
}
from
'
vs/editor/common/core/range
'
;
import
{
distinct
}
from
'
vs/base/common/arrays
'
;
...
...
@@ -14,13 +15,30 @@ import { IConfigurationRegistry, Extensions } from 'vs/platform/configuration/co
import
{
IMatch
,
or
,
matchesContiguousSubString
,
matchesPrefix
,
matchesCamelCase
,
matchesWords
}
from
'
vs/base/common/filters
'
;
import
{
IWorkspaceConfigurationService
}
from
'
vs/workbench/services/configuration/common/configuration
'
;
export
interface
IEndpointDetails
{
urlBase
:
string
;
key
:
string
;
}
export
class
PreferencesSearchProvider
{
private
_onRemoteSearchEnablementChanged
=
new
Emitter
<
boolean
>
();
public
onRemoteSearchEnablementChanged
:
Event
<
boolean
>
=
this
.
_onRemoteSearchEnablementChanged
.
event
;
constructor
(
@
IWorkspaceConfigurationService
private
configurationService
:
IWorkspaceConfigurationService
)
{
configurationService
.
onDidUpdateConfiguration
(()
=>
this
.
_onRemoteSearchEnablementChanged
.
fire
(
this
.
remoteSearchEnabled
));
}
get
remoteSearchEnabled
():
boolean
{
return
!!
this
.
configurationService
.
getConfiguration
<
IWorkbenchSettingsConfiguration
>
().
workbench
.
settings
.
useExperimentalRemoteSearch
;
const
endpoint
=
this
.
endpoint
;
return
!!
endpoint
.
urlBase
&&
!!
endpoint
.
key
;
}
get
endpoint
():
IEndpointDetails
{
const
workbenchSettings
=
this
.
configurationService
.
getConfiguration
<
IWorkbenchSettingsConfiguration
>
().
workbench
.
settings
;
return
{
urlBase
:
workbenchSettings
.
experimentalFuzzySearchEndpoint
,
key
:
workbenchSettings
.
experimentalFuzzySearchKey
};
}
startSearch
(
filter
:
string
,
remote
:
boolean
):
PreferencesSearchModel
{
...
...
@@ -32,15 +50,19 @@ export class PreferencesSearchModel {
private
_localProvider
:
LocalSearchProvider
;
private
_remoteProvider
:
RemoteSearchProvider
;
constructor
(
private
provider
:
PreferencesSearchProvider
,
filter
:
string
,
remote
:
boolean
)
{
constructor
(
private
provider
:
PreferencesSearchProvider
,
private
filter
:
string
,
remote
:
boolean
)
{
this
.
_localProvider
=
new
LocalSearchProvider
(
filter
);
if
(
remote
)
{
this
.
_remoteProvider
=
new
RemoteSearchProvider
(
filter
);
if
(
remote
&&
filter
)
{
this
.
_remoteProvider
=
new
RemoteSearchProvider
(
filter
,
this
.
provider
.
endpoint
);
}
}
filterPreferences
(
preferencesModel
:
ISettingsEditorModel
):
TPromise
<
IFilterResult
>
{
if
(
!
this
.
filter
)
{
return
TPromise
.
wrap
(
null
);
}
if
(
this
.
_remoteProvider
)
{
return
this
.
_remoteProvider
.
filterPreferences
(
preferencesModel
).
then
(
null
,
err
=>
{
return
this
.
_localProvider
.
filterPreferences
(
preferencesModel
);
...
...
@@ -86,9 +108,9 @@ class RemoteSearchProvider {
private
_filter
:
string
;
private
_remoteSearchP
:
TPromise
<
IRemoteResult
>
;
constructor
(
filter
:
string
)
{
constructor
(
filter
:
string
,
endpoint
:
IEndpointDetails
)
{
this
.
_filter
=
filter
;
this
.
_remoteSearchP
=
filter
?
getSettingsFromBing
(
filter
)
:
TPromise
.
wrap
(
null
);
this
.
_remoteSearchP
=
filter
?
getSettingsFromBing
(
filter
,
endpoint
)
:
TPromise
.
wrap
(
null
);
}
filterPreferences
(
preferencesModel
:
ISettingsEditorModel
):
TPromise
<
IFilterResult
>
{
...
...
@@ -118,8 +140,8 @@ class RemoteSearchProvider {
}
}
function
getSettingsFromBing
(
filter
:
string
):
TPromise
<
IRemoteResult
>
{
const
url
=
prepareUrl
(
filter
);
function
getSettingsFromBing
(
filter
:
string
,
endpoint
:
IEndpointDetails
):
TPromise
<
IRemoteResult
>
{
const
url
=
prepareUrl
(
filter
,
endpoint
);
console
.
log
(
'
fetching:
'
+
url
);
const
start
=
Date
.
now
();
const
p
=
fetch
(
url
,
{
...
...
@@ -161,11 +183,6 @@ function getSettingsFromBing(filter: string): TPromise<IRemoteResult> {
return
TPromise
.
as
(
p
as
any
);
}
const
endpoint
=
{
key
:
'
F3F22B32DD89DDA74B1935ED0BE6FCBA
'
,
urlBase
:
'
https://vscodesearch6.search.windows.net/indexes/vscodeindex/docs
'
};
const
API_VERSION
=
'
api-version=2015-02-28-Preview
'
;
const
QUERY_TYPE
=
'
querytype=full
'
;
const
SCORING_PROFILE
=
'
scoringProfile=ranking1
'
;
...
...
@@ -177,7 +194,7 @@ function escapeSpecialChars(query: string): string {
.
trim
();
}
function
prepareUrl
(
query
:
string
):
string
{
function
prepareUrl
(
query
:
string
,
endpoint
:
IEndpointDetails
):
string
{
query
=
escapeSpecialChars
(
query
);
const
userQuery
=
query
;
...
...
src/vs/workbench/parts/preferences/browser/preferencesWidgets.ts
浏览文件 @
92e0f496
...
...
@@ -450,7 +450,7 @@ export class SearchWidget extends Widget {
}
public
get
fuzzyEnabled
():
boolean
{
return
this
.
fuzzyToggle
.
checked
;
return
this
.
fuzzyToggle
.
checked
&&
this
.
fuzzyToggle
.
enabled
;
}
public
set
fuzzyEnabled
(
value
:
boolean
)
{
...
...
@@ -519,6 +519,16 @@ export class SearchWidget extends Widget {
this
.
styleCountElementForeground
();
}
public
setFuzzyToggleVisible
(
visible
:
boolean
):
void
{
if
(
visible
)
{
this
.
fuzzyToggle
.
domNode
.
classList
.
remove
(
'
hidden
'
);
this
.
fuzzyToggle
.
enable
();
}
else
{
this
.
fuzzyToggle
.
domNode
.
classList
.
add
(
'
hidden
'
);
this
.
fuzzyToggle
.
disable
();
}
}
private
styleCountElementForeground
()
{
const
colorId
=
DOM
.
hasClass
(
this
.
countElement
,
'
no-results
'
)
?
errorForeground
:
badgeForeground
;
const
color
=
this
.
themeService
.
getTheme
().
getColor
(
colorId
);
...
...
src/vs/workbench/parts/preferences/common/preferences.ts
浏览文件 @
92e0f496
...
...
@@ -20,7 +20,8 @@ export interface IWorkbenchSettingsConfiguration {
workbench
:
{
settings
:
{
openDefaultSettings
:
boolean
;
useExperimentalRemoteSearch
:
boolean
;
experimentalFuzzySearchEndpoint
:
string
;
experimentalFuzzySearchKey
:
string
;
}
};
}
...
...
@@ -56,6 +57,7 @@ export interface IFilterResult {
filteredGroups
:
ISettingsGroup
[];
allGroups
:
ISettingsGroup
[];
matches
:
IRange
[];
fuzzySearchAvailable
?:
boolean
;
metadata
?:
IFilterMetadata
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录