Changed Command autocomplete to pick a suggestion when space is pressed
Этот коммит содержится в:
@@ -40,6 +40,7 @@ export default class CommandProvider {
|
||||
handlePretextChanged(suggestionId, pretext) {
|
||||
if (pretext.startsWith('/')) {
|
||||
SuggestionStore.setMatchedPretext(suggestionId, pretext);
|
||||
SuggestionStore.setCompleteOnSpace(suggestionId, false);
|
||||
|
||||
AsyncClient.getSuggestedCommands(pretext, suggestionId, CommandSuggestion);
|
||||
}
|
||||
|
||||
@@ -116,7 +116,7 @@ export default class SuggestionBox extends React.Component {
|
||||
} else if (e.which === KeyCodes.DOWN) {
|
||||
EventHelpers.emitSelectNextSuggestion(this.suggestionId);
|
||||
e.preventDefault();
|
||||
} else if (e.which === KeyCodes.SPACE || e.which === KeyCodes.ENTER) {
|
||||
} else if (e.which === KeyCodes.ENTER || (e.which === KeyCodes.SPACE && SuggestionStore.shouldCompleteOnSpace(this.suggestionId))) {
|
||||
EventHelpers.emitCompleteWordSuggestion(this.suggestionId);
|
||||
e.preventDefault();
|
||||
} else if (this.props.onKeyDown) {
|
||||
|
||||
@@ -38,6 +38,7 @@ class SuggestionStore extends EventEmitter {
|
||||
// items: a list of objects backing the terms which may be used in rendering
|
||||
// components: a list of react components that can be used to render their corresponding item
|
||||
// selection: the term currently selected by the keyboard
|
||||
// completeOnSpace: whether or not space will trigger the term to be autocompleted
|
||||
this.suggestions = new Map();
|
||||
}
|
||||
|
||||
@@ -78,7 +79,8 @@ class SuggestionStore extends EventEmitter {
|
||||
terms: [],
|
||||
items: [],
|
||||
components: [],
|
||||
selection: ''
|
||||
selection: '',
|
||||
completeOnSpace: true
|
||||
});
|
||||
}
|
||||
|
||||
@@ -93,6 +95,7 @@ class SuggestionStore extends EventEmitter {
|
||||
suggestion.terms = [];
|
||||
suggestion.items = [];
|
||||
suggestion.components = [];
|
||||
suggestion.completeOnSpace = true;
|
||||
}
|
||||
|
||||
clearSelection(id) {
|
||||
@@ -117,6 +120,12 @@ class SuggestionStore extends EventEmitter {
|
||||
suggestion.matchedPretext = matchedPretext;
|
||||
}
|
||||
|
||||
setCompleteOnSpace(id, completeOnSpace) {
|
||||
const suggestion = this.suggestions.get(id);
|
||||
|
||||
suggestion.completeOnSpace = completeOnSpace;
|
||||
}
|
||||
|
||||
addSuggestion(id, term, item, component) {
|
||||
const suggestion = this.suggestions.get(id);
|
||||
|
||||
@@ -180,6 +189,10 @@ class SuggestionStore extends EventEmitter {
|
||||
return this.suggestions.get(id).selection;
|
||||
}
|
||||
|
||||
shouldCompleteOnSpace(id) {
|
||||
return this.suggestions.get(id).completeOnSpace;
|
||||
}
|
||||
|
||||
selectNext(id) {
|
||||
this.setSelectionByDelta(id, 1);
|
||||
}
|
||||
|
||||
Ссылка в новой задаче
Block a user