Scala REPL в Emacs

Мне нравится делать свою разработку Scala в Emacs, и время от времени я использую REPL для тестирования фрагментов кода или для загрузки и тестирования кода, который я только что написал. Я использую Scala 2.9.1, и я заметил, что когда я открываю REPL в терминальном буфере, ситуация существенно нарушается. В частности, я не могу удалить символы из текущей строки и не могу переместить курсор назад в текущей строке. Это очень расстраивает, так как когда-либо я что-то ошибаюсь, мне нужно начать команду заново. Мне было интересно, есть ли у кого-нибудь еще эта проблема, используя Scala REPL под Emacs, и если у кого-то есть потенциальное решение.

Ответ 1

Я нахожу, что rlwrap (оболочка readline) хорошо играет с ansi-term emacs и scala. Просто позвоните "rlwrap scala", и у вас будет обычное редактирование строк bash, а также история, работающая исправно. В качестве бонуса ваша история будет охватывать несколько вызовов scala, поэтому вы не потеряете все, что вы набрали после выхода из Scala REPL.

Если rlwrap не работает для вас, просто переключение в линейный режим в ansi-term (Cx Cj по умолчанию) позволит вам использовать редактирование в стиле emacs на линии, но без тонкостей оболочки, таких как история и завершение.

Ensime уже упоминалось, поэтому я просто запомню это как отличный вариант, если вы не против установки.

Ответ 2

Вы можете установить ENSIME и следовать инструкциям. Я не знаю о вашем способе вызвать REPL, но REPL вызван из ENSIME (он позволяет перемещать курсор назад и удалять символы, которые я проверил).