CodeMirror: захват клавиши Enter предотвращает разрывы строк


Я использовал опцию extraKeys-CodeMirror 3.12, чтобы определить, когда пользователь начинает новую строку:

extraKeys: {
    "Enter": onNewLine
}

OnNewLine () не делает ничего, кроме консоли.бревно(). Теперь Кодемиррор игнорирует этот ключ. Вы больше не можете начать новую линию. Есть ли способ подключить дополнительную функциональность к событию new-line без вмешательства внутренних компонентов CodeMirror? Я просто хочу проанализировать текст недавно закрытой строки.

2 2

2 ответа:

Добавьте разрыв строки в конце функции onNewLine. Это должно сработать

 function onNewLine(e){
    console.log(e);
    editor.replaceSelection("\n" ,"end");
  }

Я обнаружил, что возвращаю CodeMirror.Пас также работает:

function onNewLine(e) {
    console.log("Enter key was pressed!");
    return CodeMirror.Pass;
}

Из документации:

Функция обработчика ключей может возвращать CodeMirror.Pass указывает на то, что он решил не обрабатывать ключ, и другим обработчикам (или поведению по умолчанию) следует дать ход.

Это, кажется, работает, даже если обработчик выполняет действие. В моем случае я использовал редактор.функция отступа для отступа текущей строки при нажатии пользователем клавиши enter.