add support for autocomplete delay
parent
2d39b25334
commit
32dd89774e
|
@ -139,7 +139,7 @@ module.exports = {
|
||||||
|
|
||||||
getSyncedSetting: function(type, defaultValue = null) {
|
getSyncedSetting: function(type, defaultValue = null) {
|
||||||
var settings = this.getSyncedSettings();
|
var settings = this.getSyncedSettings();
|
||||||
return settings.hasOwnProperty(type) ? settings[type] : null;
|
return settings.hasOwnProperty(type) ? settings[type] : defaultValue;
|
||||||
},
|
},
|
||||||
|
|
||||||
setSyncedSetting: function(type, value) {
|
setSyncedSetting: function(type, value) {
|
||||||
|
@ -156,7 +156,7 @@ module.exports = {
|
||||||
|
|
||||||
getLocalSetting: function(type, defaultValue = null) {
|
getLocalSetting: function(type, defaultValue = null) {
|
||||||
var settings = this.getLocalSettings();
|
var settings = this.getLocalSettings();
|
||||||
return settings.hasOwnProperty(type) ? settings[type] : null;
|
return settings.hasOwnProperty(type) ? settings[type] : defaultValue;
|
||||||
},
|
},
|
||||||
|
|
||||||
setLocalSetting: function(type, value) {
|
setLocalSetting: function(type, value) {
|
||||||
|
|
|
@ -43,7 +43,7 @@ export async function getCompletions(query: string, selection: SelectionRange, f
|
||||||
PROVIDERS.map(provider => {
|
PROVIDERS.map(provider => {
|
||||||
return Q(provider.getCompletions(query, selection, force))
|
return Q(provider.getCompletions(query, selection, force))
|
||||||
.timeout(PROVIDER_COMPLETION_TIMEOUT);
|
.timeout(PROVIDER_COMPLETION_TIMEOUT);
|
||||||
})
|
}),
|
||||||
);
|
);
|
||||||
|
|
||||||
return completionsList
|
return completionsList
|
||||||
|
|
|
@ -508,6 +508,15 @@ module.exports = React.createClass({
|
||||||
{ this._renderUrlPreviewSelector() }
|
{ this._renderUrlPreviewSelector() }
|
||||||
{ SETTINGS_LABELS.map( this._renderSyncedSetting ) }
|
{ SETTINGS_LABELS.map( this._renderSyncedSetting ) }
|
||||||
{ THEMES.map( this._renderThemeSelector ) }
|
{ THEMES.map( this._renderThemeSelector ) }
|
||||||
|
<table>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td><strong>Autocomplete Delay (ms): </strong></td>
|
||||||
|
<td><input type="number" defaultValue={UserSettingsStore.getLocalSetting('autocompleteDelay', 200)}
|
||||||
|
onChange={(e) => UserSettingsStore.setLocalSetting('autocompleteDelay', +e.target.value)} /> </td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|
|
@ -6,6 +6,7 @@ import isEqual from 'lodash/isEqual';
|
||||||
import sdk from '../../../index';
|
import sdk from '../../../index';
|
||||||
import type {Completion, SelectionRange} from '../../../autocomplete/Autocompleter';
|
import type {Completion, SelectionRange} from '../../../autocomplete/Autocompleter';
|
||||||
import Q from 'q';
|
import Q from 'q';
|
||||||
|
import UserSettingsStore from '../../../UserSettingsStore';
|
||||||
|
|
||||||
import {getCompletions} from '../../../autocomplete/Autocompleter';
|
import {getCompletions} from '../../../autocomplete/Autocompleter';
|
||||||
|
|
||||||
|
@ -77,9 +78,6 @@ export default class Autocomplete extends React.Component {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no completions were returned, we should turn off force completion.
|
|
||||||
forceComplete = false;
|
|
||||||
|
|
||||||
let hide = this.state.hide;
|
let hide = this.state.hide;
|
||||||
// These are lists of booleans that indicate whether whether the corresponding provider had a matching pattern
|
// These are lists of booleans that indicate whether whether the corresponding provider had a matching pattern
|
||||||
const oldMatches = this.state.completions.map((completion) => !!completion.command.command),
|
const oldMatches = this.state.completions.map((completion) => !!completion.command.command),
|
||||||
|
@ -90,6 +88,17 @@ export default class Autocomplete extends React.Component {
|
||||||
hide = false;
|
hide = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const autocompleteDelay = UserSettingsStore.getSyncedSetting('autocompleteDelay', 200);
|
||||||
|
|
||||||
|
// We had no completions before, but do now, so we should apply our display delay here
|
||||||
|
if (this.state.completionList.length === 0 && completionList.length > 0 &&
|
||||||
|
!forceComplete && autocompleteDelay > 0) {
|
||||||
|
await Q.delay(autocompleteDelay);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Force complete is turned off each time since we can't edit the query in that case
|
||||||
|
forceComplete = false;
|
||||||
|
|
||||||
this.setState({
|
this.setState({
|
||||||
completions,
|
completions,
|
||||||
completionList,
|
completionList,
|
||||||
|
|
Loading…
Reference in New Issue