Я пытаюсь настроить редактор Ace только с одной строкой текста.
Идея состоит в том, чтобы имитировать поведение поля <input type="text">, но с синтаксической раскраской:

В настоящее время, если пользователь нажимает Enter, находясь в редакторе, он создает новую строку:

Итак, мой вопрос:
Как настроить Ace, чтобы разрешить только одну строку, например, стандартное поле ввода текста?
Ниже я попытался до сих пор, и причины, по которым это не удалось.
-
Вызов
editor.undo()наchange, еслиe.lines.length > 1Проблема заключается в том, что
changeзапускается до того, как фактическое изменение применяется в дельтах, поэтомуundo()здесь не работает (или относится к предыдущей дельта) -
Отмена
keypress, еслиEvent.which = 13Это работает, но очень грязно, и он не обрабатывает случай, когда текст с несколькими строками вставлен, поэтому нам нужно было бы обрабатывать событие
paste, что сделало бы это решение еще более грязным. Я также довольно уверен, что будут приняты еще более кратные случаи. -
Попытка "пустить"
eвon("change", function(e) { ... })Например, говоря, что
e = {}в функции обратного вызова при условии, чтоeявляется просто ссылкой на фактический объект. Нет никакого эффекта. -
Попытка найти встроенный параметр в редакторе Ace для этого
Не удалось найти такой параметр...