@@ -25,7 +25,7 @@ import { CodeEditor } from 'vs/editor/browser/codeEditor';
2525import { IInstantiationService , ServicesAccessor } from 'vs/platform/instantiation/common/instantiation' ;
2626import {
2727 IPreferencesService , ISettingsGroup , ISetting , IFilterResult , IPreferencesSearchService ,
28- 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
28+ 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 , IPreferencesSearchModel
2929} from 'vs/workbench/parts/preferences/common/preferences' ;
3030import { SettingsEditorModel , DefaultSettingsEditorModel } from 'vs/workbench/parts/preferences/common/preferencesModels' ;
3131import { ICodeEditor } from 'vs/editor/browser/editorBrowser' ;
@@ -387,6 +387,7 @@ class PreferencesRenderers extends Disposable {
387387 private _settingsNavigator : SettingsNavigator ;
388388 private _filtersInProgress : TPromise < any > [ ] ;
389389 private _searchCriteria : ISearchCriteria ;
390+ private _currentSearchModel : IPreferencesSearchModel ;
390391
391392 private _onTriggeredFuzzy : Emitter < void > = this . _register ( new Emitter < void > ( ) ) ;
392393 public onTriggeredFuzzy : Event < void > = this . _onTriggeredFuzzy . event ;
@@ -404,6 +405,10 @@ class PreferencesRenderers extends Disposable {
404405 return this . _defaultPreferencesRenderer ;
405406 }
406407
408+ get editablePreferencesRenderer ( ) : IPreferencesRenderer < ISetting > {
409+ return this . _editablePreferencesRenderer ;
410+ }
411+
407412 set defaultPreferencesRenderer ( defaultPreferencesRenderer : IPreferencesRenderer < ISetting > ) {
408413 if ( this . _defaultPreferencesRenderer !== defaultPreferencesRenderer ) {
409414 this . _defaultPreferencesRenderer = defaultPreferencesRenderer ;
@@ -427,11 +432,13 @@ class PreferencesRenderers extends Disposable {
427432 this . _editablePreferencesRendererDisposables = dispose ( this . _editablePreferencesRendererDisposables ) ;
428433 if ( this . _editablePreferencesRenderer ) {
429434 ( < ISettingsEditorModel > this . _editablePreferencesRenderer . preferencesModel ) . onDidChangeGroups ( ( ) => {
430- this . _filterEditablePreferences ( )
431- . then ( ( ) => {
432- const count = this . consolidateAndUpdate ( ) ;
433- this . _onDidFilterResultsCountChange . fire ( count ) ;
434- } ) ;
435+ if ( this . _currentSearchModel ) {
436+ this . _filterEditablePreferences ( )
437+ . then ( ( ) => {
438+ const count = this . consolidateAndUpdate ( ) ;
439+ this . _onDidFilterResultsCountChange . fire ( count ) ;
440+ } ) ;
441+ }
435442 } , this , this . _editablePreferencesRendererDisposables ) ;
436443 }
437444 }
@@ -445,6 +452,7 @@ class PreferencesRenderers extends Disposable {
445452 this . _filtersInProgress . forEach ( p => p . cancel && p . cancel ( ) ) ;
446453 }
447454
455+ this . _currentSearchModel = this . preferencesSearchService . startSearch ( this . _searchCriteria . filter , criteria . fuzzy ) ;
448456 this . _filtersInProgress = [ this . _filterDefaultPreferences ( ) , this . _filterEditablePreferences ( ) ] ;
449457
450458 return TPromise . join < IFilterResult > ( this . _filtersInProgress ) . then ( ( ) => {
@@ -473,15 +481,15 @@ class PreferencesRenderers extends Disposable {
473481
474482 private _filterDefaultPreferences ( ) : TPromise < void > {
475483 if ( this . _searchCriteria && this . _defaultPreferencesRenderer ) {
476- return this . _filterPreferences ( this . _searchCriteria , this . _defaultPreferencesRenderer )
484+ return this . _filterPreferences ( this . _searchCriteria , this . _defaultPreferencesRenderer , this . _currentSearchModel )
477485 . then ( filterResult => { this . _defaultPreferencesFilterResult = filterResult ; } ) ;
478486 }
479487 return TPromise . wrap ( null ) ;
480488 }
481489
482490 private _filterEditablePreferences ( ) : TPromise < void > {
483491 if ( this . _searchCriteria && this . _editablePreferencesRenderer ) {
484- return this . _filterPreferences ( { filter : this . _searchCriteria . filter , fuzzy : false } , this . _editablePreferencesRenderer )
492+ return this . _filterPreferences ( this . _searchCriteria , this . _editablePreferencesRenderer , this . _currentSearchModel )
485493 . then ( filterResult => { this . _editablePreferencesFilterResult = filterResult ; } ) ;
486494 }
487495 return TPromise . wrap ( null ) ;
@@ -500,9 +508,8 @@ class PreferencesRenderers extends Disposable {
500508 return preferencesRenderer ? ( < ISettingsEditorModel > preferencesRenderer . preferencesModel ) . settingsGroups : [ ] ;
501509 }
502510
503- private _filterPreferences ( searchCriteria : ISearchCriteria , preferencesRenderer : IPreferencesRenderer < ISetting > ) : TPromise < IFilterResult > {
504- if ( preferencesRenderer ) {
505- const searchModel = this . preferencesSearchService . startSearch ( searchCriteria . filter , searchCriteria . fuzzy ) ;
511+ private _filterPreferences ( searchCriteria : ISearchCriteria , preferencesRenderer : IPreferencesRenderer < ISetting > , searchModel : IPreferencesSearchModel ) : TPromise < IFilterResult > {
512+ if ( preferencesRenderer && searchCriteria ) {
506513 const prefSearchP = searchModel . filterPreferences ( < ISettingsEditorModel > preferencesRenderer . preferencesModel ) ;
507514
508515 return prefSearchP . then ( filterResult => {
0 commit comments