Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
vscode
提交
5c5e2ee0
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,发现更多精彩内容 >>
提交
5c5e2ee0
编写于
11月 13, 2017
作者:
R
Rob Lourens
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Improve telemetry for settings search - fix Microsoft/vscode-bing#34
上级
0790dd3f
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
67 addition
and
37 deletion
+67
-37
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
.../workbench/parts/preferences/browser/preferencesEditor.ts
+18
-11
src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts
...rkbench/parts/preferences/browser/preferencesRenderers.ts
+49
-26
未找到文件。
src/vs/workbench/parts/preferences/browser/preferencesEditor.ts
浏览文件 @
5c5e2ee0
...
...
@@ -24,7 +24,7 @@ import { CodeEditor } from 'vs/editor/browser/codeEditor';
import
{
IInstantiationService
,
ServicesAccessor
}
from
'
vs/platform/instantiation/common/instantiation
'
;
import
{
IPreferencesService
,
ISettingsGroup
,
ISetting
,
IFilterResult
,
CONTEXT_SETTINGS_EDITOR
,
CONTEXT_SETTINGS_SEARCH_FOCUS
,
SETTINGS_EDITOR_COMMAND_SEARCH
,
SETTINGS_EDITOR_COMMAND_FOCUS_FILE
,
ISettingsEditorModel
,
SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS
,
SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING
,
SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING
CONTEXT_SETTINGS_EDITOR
,
CONTEXT_SETTINGS_SEARCH_FOCUS
,
SETTINGS_EDITOR_COMMAND_SEARCH
,
SETTINGS_EDITOR_COMMAND_FOCUS_FILE
,
ISettingsEditorModel
,
SETTINGS_EDITOR_COMMAND_CLEAR_SEARCH_RESULTS
,
SETTINGS_EDITOR_COMMAND_FOCUS_NEXT_SETTING
,
SETTINGS_EDITOR_COMMAND_FOCUS_PREVIOUS_SETTING
,
IFilterMetadata
}
from
'
vs/workbench/parts/preferences/common/preferences
'
;
import
{
SettingsEditorModel
,
DefaultSettingsEditorModel
}
from
'
vs/workbench/parts/preferences/common/preferencesModels
'
;
import
{
ICodeEditor
}
from
'
vs/editor/browser/editorBrowser
'
;
...
...
@@ -324,13 +324,15 @@ export class PreferencesEditor extends BaseEditor {
private
filterPreferences
():
TPromise
<
void
>
{
const
filter
=
this
.
searchWidget
.
getValue
().
trim
();
return
this
.
preferencesRenderers
.
filterPreferences
(
filter
,
this
.
searchProvider
,
this
.
searchWidget
.
fuzzyEnabled
).
then
(
count
=>
{
return
this
.
preferencesRenderers
.
filterPreferences
(
filter
,
this
.
searchProvider
,
this
.
searchWidget
.
fuzzyEnabled
).
then
(
result
=>
{
const
count
=
result
.
count
;
const
message
=
filter
?
this
.
showSearchResultsMessage
(
count
)
:
nls
.
localize
(
'
totalSettingsMessage
'
,
"
Total {0} Settings
"
,
count
);
this
.
searchWidget
.
showMessage
(
message
,
count
);
if
(
count
===
0
)
{
this
.
latestEmptyFilters
.
push
(
filter
);
}
this
.
delayedFilterLogging
.
trigger
(()
=>
this
.
reportFilteringUsed
(
filter
));
this
.
delayedFilterLogging
.
trigger
(()
=>
this
.
reportFilteringUsed
(
filter
,
result
.
metadata
));
},
onUnexpectedError
);
}
...
...
@@ -340,17 +342,22 @@ export class PreferencesEditor extends BaseEditor {
nls
.
localize
(
'
settingsFound
'
,
"
{0} Settings matched
"
,
count
);
}
private
reportFilteringUsed
(
filter
:
string
):
void
{
private
reportFilteringUsed
(
filter
:
string
,
metadata
?:
IFilterMetadata
):
void
{
if
(
filter
)
{
let
data
=
{
filter
,
emptyFilters
:
this
.
getLatestEmptyFiltersForTelemetry
()
emptyFilters
:
this
.
getLatestEmptyFiltersForTelemetry
(),
fuzzy
:
!!
metadata
,
duration
:
metadata
?
metadata
.
duration
:
undefined
};
this
.
latestEmptyFilters
=
[];
/* __GDPR__
"defaultSettings.filter" : {
"filter": { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"emptyFilters" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"emptyFilters" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" },
"duration" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"fuzzy" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this
.
telemetryService
.
publicLog
(
'
defaultSettings.filter
'
,
data
);
...
...
@@ -423,7 +430,7 @@ class PreferencesRenderers extends Disposable {
this
.
_disposables
=
dispose
(
this
.
_disposables
);
if
(
this
.
_defaultPreferencesRenderer
)
{
this
.
_defaultPreferencesRenderer
.
onUpdatePreference
(({
key
,
value
,
source
})
=>
this
.
_updatePreference
(
key
,
value
,
source
,
this
.
_editablePreferencesRenderer
),
this
,
this
.
_disposables
);
this
.
_defaultPreferencesRenderer
.
onUpdatePreference
(({
key
,
value
,
source
,
index
})
=>
this
.
_updatePreference
(
key
,
value
,
source
,
index
,
this
.
_editablePreferencesRenderer
),
this
,
this
.
_disposables
);
this
.
_defaultPreferencesRenderer
.
onFocusPreference
(
preference
=>
this
.
_focusPreference
(
preference
,
this
.
_editablePreferencesRenderer
),
this
,
this
.
_disposables
);
this
.
_defaultPreferencesRenderer
.
onClearFocusPreference
(
preference
=>
this
.
_clearFocus
(
preference
,
this
.
_editablePreferencesRenderer
),
this
,
this
.
_disposables
);
if
(
this
.
_defaultPreferencesRenderer
.
onTriggeredFuzzy
)
{
...
...
@@ -437,7 +444,7 @@ class PreferencesRenderers extends Disposable {
this
.
_editablePreferencesRenderer
=
editableSettingsRenderer
;
}
public
filterPreferences
(
filter
:
string
,
searchProvider
:
PreferencesSearchProvider
,
fuzzy
:
boolean
):
TPromise
<
number
>
{
public
filterPreferences
(
filter
:
string
,
searchProvider
:
PreferencesSearchProvider
,
fuzzy
:
boolean
):
TPromise
<
{
count
:
number
,
metadata
:
IFilterMetadata
}
>
{
if
(
this
.
_filtersInProgress
)
{
// Resolved/rejected promises have no .cancel()
this
.
_filtersInProgress
.
forEach
(
p
=>
p
.
cancel
&&
p
.
cancel
());
...
...
@@ -459,7 +466,7 @@ class PreferencesRenderers extends Disposable {
this
.
_settingsNavigator
=
new
SettingsNavigator
(
filter
?
consolidatedSettings
:
[]);
return
consolidatedSettings
.
length
;
return
{
count
:
consolidatedSettings
.
length
,
metadata
:
defaultPreferencesFilterResult
&&
defaultPreferencesFilterResult
.
metadata
}
;
});
}
...
...
@@ -502,9 +509,9 @@ class PreferencesRenderers extends Disposable {
}
}
private
_updatePreference
(
key
:
string
,
value
:
any
,
source
:
ISetting
,
preferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
):
void
{
private
_updatePreference
(
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
,
preferencesRenderer
:
IPreferencesRenderer
<
ISetting
>
):
void
{
if
(
preferencesRenderer
)
{
preferencesRenderer
.
updatePreference
(
key
,
value
,
source
);
preferencesRenderer
.
updatePreference
(
key
,
value
,
source
,
index
);
}
}
...
...
src/vs/workbench/parts/preferences/browser/preferencesRenderers.ts
浏览文件 @
5c5e2ee0
...
...
@@ -40,11 +40,11 @@ export interface IPreferencesRenderer<T> extends IDisposable {
onFocusPreference
:
Event
<
T
>
;
onClearFocusPreference
:
Event
<
T
>
;
onUpdatePreference
:
Event
<
{
key
:
string
,
value
:
any
,
source
:
T
}
>
;
onUpdatePreference
?:
Event
<
{
key
:
string
,
value
:
any
,
source
:
T
,
index
:
number
}
>
;
onTriggeredFuzzy
?:
Event
<
void
>
;
render
():
void
;
updatePreference
(
key
:
string
,
value
:
any
,
source
:
T
):
void
;
updatePreference
(
key
:
string
,
value
:
any
,
source
:
T
,
index
:
number
):
void
;
filterPreferences
(
filterResult
:
IFilterResult
,
fuzzySearchAvailable
:
boolean
):
void
;
focusPreference
(
setting
:
T
):
void
;
clearFocus
(
setting
:
T
):
void
;
...
...
@@ -61,9 +61,6 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend
private
_onFocusPreference
:
Emitter
<
ISetting
>
=
new
Emitter
<
ISetting
>
();
public
readonly
onFocusPreference
:
Event
<
ISetting
>
=
this
.
_onFocusPreference
.
event
;
private
_onUpdatePreference
:
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
=
new
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
();
public
readonly
onUpdatePreference
:
Event
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
=
this
.
_onUpdatePreference
.
event
;
private
_onClearFocusPreference
:
Emitter
<
ISetting
>
=
new
Emitter
<
ISetting
>
();
public
readonly
onClearFocusPreference
:
Event
<
ISetting
>
=
this
.
_onClearFocusPreference
.
event
;
...
...
@@ -79,7 +76,7 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend
this
.
settingHighlighter
=
this
.
_register
(
instantiationService
.
createInstance
(
SettingHighlighter
,
editor
,
this
.
_onFocusPreference
,
this
.
_onClearFocusPreference
));
this
.
highlightMatchesRenderer
=
this
.
_register
(
instantiationService
.
createInstance
(
HighlightMatchesRenderer
,
editor
));
this
.
editSettingActionRenderer
=
this
.
_register
(
this
.
instantiationService
.
createInstance
(
EditSettingRenderer
,
this
.
editor
,
this
.
preferencesModel
,
this
.
settingHighlighter
));
this
.
_register
(
this
.
editSettingActionRenderer
.
onUpdateSetting
(({
key
,
value
,
source
})
=>
this
.
updatePreference
(
key
,
value
,
sourc
e
)));
this
.
_register
(
this
.
editSettingActionRenderer
.
onUpdateSetting
(({
key
,
value
,
source
,
index
})
=>
this
.
updatePreference
(
key
,
value
,
source
,
index
,
tru
e
)));
this
.
_register
(
this
.
editor
.
getModel
().
onDidChangeContent
(()
=>
this
.
modelChangeDelayer
.
trigger
(()
=>
this
.
onModelChanged
())));
this
.
createHeader
();
...
...
@@ -105,13 +102,30 @@ export class UserSettingsRenderer extends Disposable implements IPreferencesRend
}
}
public
updatePreference
(
key
:
string
,
value
:
any
,
source
:
ISetting
):
void
{
public
updatePreference
(
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
,
fromEditableSettings
?:
boolean
):
void
{
const
data
=
{
userConfigurationKeys
:
[
key
]
};
if
(
this
.
filterResult
)
{
data
[
'
query
'
]
=
this
.
filterResult
.
query
;
data
[
'
fuzzy
'
]
=
!!
this
.
filterResult
.
metadata
;
data
[
'
duration
'
]
=
this
.
filterResult
.
metadata
&&
this
.
filterResult
.
metadata
.
duration
;
data
[
'
index
'
]
=
index
;
data
[
'
editableSide
'
]
=
!!
fromEditableSettings
;
}
/* __GDPR__
"defaultSettingsActions.copySetting" : {
"userConfigurationKeys" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"query" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"fuzzy" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"duration" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"index" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
"editableSide" : { "classification": "SystemMetaData", "purpose": "FeatureInsight" }
}
*/
this
.
telemetryService
.
publicLog
(
'
defaultSettingsActions.copySetting
'
,
{
userConfigurationKeys
:
[
key
]
}
);
this
.
telemetryService
.
publicLog
(
'
defaultSettingsActions.copySetting
'
,
data
);
const
overrideIdentifier
=
source
.
overrideOf
?
overrideIdentifierFromKey
(
source
.
overrideOf
.
key
)
:
null
;
const
resource
=
this
.
preferencesModel
.
uri
;
this
.
configurationService
.
updateValue
(
key
,
value
,
{
overrideIdentifier
,
resource
},
this
.
preferencesModel
.
configurationTarget
)
...
...
@@ -232,8 +246,8 @@ export class DefaultSettingsRenderer extends Disposable implements IPreferencesR
private
editSettingActionRenderer
:
EditSettingRenderer
;
private
feedbackWidgetRenderer
:
FeedbackWidgetRenderer
;
private
_onUpdatePreference
:
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
=
new
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
();
public
readonly
onUpdatePreference
:
Event
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
=
this
.
_onUpdatePreference
.
event
;
private
_onUpdatePreference
:
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
}
>
=
new
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
}
>
();
public
readonly
onUpdatePreference
:
Event
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
}
>
=
this
.
_onUpdatePreference
.
event
;
private
_onFocusPreference
:
Emitter
<
ISetting
>
=
new
Emitter
<
ISetting
>
();
public
readonly
onFocusPreference
:
Event
<
ISetting
>
=
this
.
_onFocusPreference
.
event
;
...
...
@@ -849,17 +863,21 @@ export class HighlightMatchesRenderer extends Disposable {
}
}
interface
IIndexedSetting
extends
ISetting
{
index
:
number
;
}
class
EditSettingRenderer
extends
Disposable
{
private
editPreferenceWidgetForCusorPosition
:
EditPreferenceWidget
<
ISetting
>
;
private
editPreferenceWidgetForMouseMove
:
EditPreferenceWidget
<
ISetting
>
;
private
editPreferenceWidgetForCusorPosition
:
EditPreferenceWidget
<
I
Indexed
Setting
>
;
private
editPreferenceWidgetForMouseMove
:
EditPreferenceWidget
<
I
Indexed
Setting
>
;
private
settingsGroups
:
ISettingsGroup
[];
public
associatedPreferencesModel
:
IPreferencesEditorModel
<
ISetting
>
;
private
toggleEditPreferencesForMouseMoveDelayer
:
Delayer
<
void
>
;
private
_onUpdateSetting
:
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
=
new
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
();
public
readonly
onUpdateSetting
:
Event
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
}
>
=
this
.
_onUpdateSetting
.
event
;
private
_onUpdateSetting
:
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
}
>
=
new
Emitter
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
}
>
();
public
readonly
onUpdateSetting
:
Event
<
{
key
:
string
,
value
:
any
,
source
:
ISetting
,
index
:
number
}
>
=
this
.
_onUpdateSetting
.
event
;
constructor
(
private
editor
:
ICodeEditor
,
private
masterSettingsModel
:
ISettingsEditorModel
,
private
settingHighlighter
:
SettingHighlighter
,
...
...
@@ -920,7 +938,7 @@ class EditSettingRenderer extends Disposable {
return
;
}
this
.
settingHighlighter
.
clear
();
this
.
toggleEditPreferencesForMouseMoveDelayer
.
trigger
(()
=>
this
.
toggleE
id
tPreferenceWidgetForMouseMove
(
mouseMoveEvent
));
this
.
toggleEditPreferencesForMouseMoveDelayer
.
trigger
(()
=>
this
.
toggleE
di
tPreferenceWidgetForMouseMove
(
mouseMoveEvent
));
}
private
getEditPreferenceWidgetUnderMouse
(
mouseMoveEvent
:
IEditorMouseEvent
):
EditPreferenceWidget
<
ISetting
>
{
...
...
@@ -936,7 +954,7 @@ class EditSettingRenderer extends Disposable {
return
null
;
}
private
toggleE
id
tPreferenceWidgetForMouseMove
(
mouseMoveEvent
:
IEditorMouseEvent
):
void
{
private
toggleE
di
tPreferenceWidgetForMouseMove
(
mouseMoveEvent
:
IEditorMouseEvent
):
void
{
const
settings
=
mouseMoveEvent
.
target
.
position
?
this
.
getSettings
(
mouseMoveEvent
.
target
.
position
.
lineNumber
)
:
null
;
if
(
settings
&&
settings
.
length
)
{
this
.
showEditPreferencesWidget
(
this
.
editPreferenceWidgetForMouseMove
,
settings
);
...
...
@@ -945,7 +963,7 @@ class EditSettingRenderer extends Disposable {
}
}
private
showEditPreferencesWidget
(
editPreferencesWidget
:
EditPreferenceWidget
<
ISetting
>
,
settings
:
ISetting
[])
{
private
showEditPreferencesWidget
(
editPreferencesWidget
:
EditPreferenceWidget
<
ISetting
>
,
settings
:
I
Indexed
Setting
[])
{
const
line
=
settings
[
0
].
valueRange
.
startLineNumber
;
if
(
this
.
editor
.
getConfiguration
().
viewInfo
.
glyphMargin
&&
this
.
marginFreeFromOtherDecorations
(
line
))
{
editPreferencesWidget
.
show
(
line
,
nls
.
localize
(
'
editTtile
'
,
"
Edit
"
),
settings
);
...
...
@@ -966,7 +984,7 @@ class EditSettingRenderer extends Disposable {
return
true
;
}
private
getSettings
(
lineNumber
:
number
):
ISetting
[]
{
private
getSettings
(
lineNumber
:
number
):
I
Indexed
Setting
[]
{
const
configurationMap
=
this
.
getConfigurationsMap
();
return
this
.
getSettingsAtLineNumber
(
lineNumber
).
filter
(
setting
=>
{
let
configurationNode
=
configurationMap
[
setting
.
key
];
...
...
@@ -991,7 +1009,10 @@ class EditSettingRenderer extends Disposable {
});
}
private
getSettingsAtLineNumber
(
lineNumber
:
number
):
ISetting
[]
{
private
getSettingsAtLineNumber
(
lineNumber
:
number
):
IIndexedSetting
[]
{
// index of setting, across all groups/sections
let
index
=
0
;
const
settings
=
[];
for
(
const
group
of
this
.
settingsGroups
)
{
if
(
group
.
range
.
startLineNumber
>
lineNumber
)
{
...
...
@@ -1008,13 +1029,15 @@ class EditSettingRenderer extends Disposable {
// Only one level because override settings cannot have override settings
for
(
const
overrideSetting
of
setting
.
overrides
)
{
if
(
lineNumber
>=
overrideSetting
.
range
.
startLineNumber
&&
lineNumber
<=
overrideSetting
.
range
.
endLineNumber
)
{
settings
.
push
(
overrideSetting
);
settings
.
push
(
{
...
overrideSetting
,
index
}
);
}
}
}
else
{
settings
.
push
(
setting
);
settings
.
push
(
{
...
setting
,
index
}
);
}
}
index
++
;
}
}
}
...
...
@@ -1026,7 +1049,7 @@ class EditSettingRenderer extends Disposable {
this
.
settingHighlighter
.
highlight
(
editPreferenceWidget
.
preferences
[
0
]);
}
private
onEditSettingClicked
(
editPreferenceWidget
:
EditPreferenceWidget
<
ISetting
>
,
e
:
IEditorMouseEvent
):
void
{
private
onEditSettingClicked
(
editPreferenceWidget
:
EditPreferenceWidget
<
I
Indexed
Setting
>
,
e
:
IEditorMouseEvent
):
void
{
const
anchor
=
{
x
:
e
.
event
.
posx
,
y
:
e
.
event
.
posy
+
10
};
const
actions
=
this
.
getSettings
(
editPreferenceWidget
.
getLine
()).
length
===
1
?
this
.
getActions
(
editPreferenceWidget
.
preferences
[
0
],
this
.
getConfigurationsMap
()[
editPreferenceWidget
.
preferences
[
0
].
key
])
:
editPreferenceWidget
.
preferences
.
map
(
setting
=>
new
ContextSubMenu
(
setting
.
key
,
this
.
getActions
(
setting
,
this
.
getConfigurationsMap
()[
setting
.
key
])));
...
...
@@ -1040,7 +1063,7 @@ class EditSettingRenderer extends Disposable {
return
Registry
.
as
<
IConfigurationRegistry
>
(
ConfigurationExtensions
.
Configuration
).
getConfigurationProperties
();
}
private
getActions
(
setting
:
ISetting
,
jsonSchema
:
IJSONSchema
):
IAction
[]
{
private
getActions
(
setting
:
I
Indexed
Setting
,
jsonSchema
:
IJSONSchema
):
IAction
[]
{
if
(
jsonSchema
.
type
===
'
boolean
'
)
{
return
[
<
IAction
>
{
id
:
'
truthyValue
'
,
...
...
@@ -1067,7 +1090,7 @@ class EditSettingRenderer extends Disposable {
return
this
.
getDefaultActions
(
setting
);
}
private
getDefaultActions
(
setting
:
ISetting
):
IAction
[]
{
private
getDefaultActions
(
setting
:
I
Indexed
Setting
):
IAction
[]
{
if
(
this
.
isDefaultSettings
())
{
const
settingInOtherModel
=
this
.
associatedPreferencesModel
.
getPreference
(
setting
.
key
);
return
[
<
IAction
>
{
...
...
@@ -1080,8 +1103,8 @@ class EditSettingRenderer extends Disposable {
return
[];
}
private
updateSetting
(
key
:
string
,
value
:
any
,
source
:
ISetting
):
void
{
this
.
_onUpdateSetting
.
fire
({
key
,
value
,
source
});
private
updateSetting
(
key
:
string
,
value
:
any
,
source
:
I
Indexed
Setting
):
void
{
this
.
_onUpdateSetting
.
fire
({
key
,
value
,
source
,
index
:
source
.
index
});
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录