diff --git a/src/components/views/rooms/BasicMessageComposer.js b/src/components/views/rooms/BasicMessageComposer.js index 770e4766f3..95855e8c81 100644 --- a/src/components/views/rooms/BasicMessageComposer.js +++ b/src/components/views/rooms/BasicMessageComposer.js @@ -268,7 +268,7 @@ export default class BasicMessageEditor extends React.Component { handled = true; // autocomplete or enter to send below shouldn't have any modifier keys pressed. } else if (!(event.metaKey || event.altKey || event.shiftKey)) { - if (model.autoComplete) { + if (model.autoComplete && model.autoComplete.hasCompletions()) { const autoComplete = model.autoComplete; switch (event.key) { case "ArrowUp": @@ -309,7 +309,11 @@ export default class BasicMessageEditor extends React.Component { const position = model.positionForOffset(caret.offset, caret.atNodeEnd); const range = model.startRange(position); range.expandBackwardsWhile((index, offset, part) => { - return part.text[offset] !== " " && (part.type === "plain" || part.type === "pill-candidate"); + return part.text[offset] !== " " && ( + part.type === "plain" || + part.type === "pill-candidate" || + part.type === "command" + ); }); const {partCreator} = model; // await for auto-complete to be open diff --git a/src/editor/autocomplete.js b/src/editor/autocomplete.js index d3b8f713b9..fe6f3bfe1f 100644 --- a/src/editor/autocomplete.js +++ b/src/editor/autocomplete.js @@ -40,6 +40,11 @@ export default class AutocompleteWrapperModel { return this._getAutocompleterComponent().hasSelection(); } + hasCompletions() { + const ac = this._getAutocompleterComponent(); + return ac && ac.countCompletions() > 0; + } + onEnter() { this._updateCallback({close: true}); } diff --git a/src/editor/parts.js b/src/editor/parts.js index d14fcf98a2..9ca9205bcd 100644 --- a/src/editor/parts.js +++ b/src/editor/parts.js @@ -465,10 +465,6 @@ export class CommandPartCreator extends PartCreator { } class CommandPart extends PillCandidatePart { - acceptsInsertion(chr, i) { - return PlainPart.prototype.acceptsInsertion.call(this, chr, i); - } - get type() { return "command"; }