Я пытаюсь настроить редактор 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 для этого
Не удалось найти такой параметр...