Мне нравится делать свою разработку Scala в Emacs, и время от времени я использую REPL для тестирования фрагментов кода или загрузки и тестирования кода, который я только что написал. Я использую Scala 2.9.1, и я заметил, что когда я открываю REPL в терминальном буфере, ситуация существенно нарушается. В частности, я не могу удалить символы из текущей строки и не могу переместить курсор назад в текущей строке. Это очень расстраивает, так как когда-либо я что-то ошибаюсь, мне нужно начать команду заново. Мне было интересно, есть ли у кого-нибудь еще эта проблема, используя Scala REPL под Emacs, и если у кого-то есть потенциальное решение.Scala REPL in Emacs
ответ
Я нахожу, что rlwrap (обломок readline) хорошо играет с анси-терминами emacs и scala. Просто назовите «rlwrap scala», и у вас будет обычное редактирование строки bash, а также история, работающая исправно. В качестве бонуса ваша история будет охватывать несколько вызовов scala, поэтому вы не потеряете все, что вы набрали после выхода из Scala REPL.
Если rlwrap не работает для вас, просто переключение в линейный режим в ansi-term (Cx Cj по умолчанию) позволит вам использовать редактирование в стиле emacs на линии, но без тонкостей оболочки, таких как история и завершение.
Ensime уже упоминалось, поэтому я просто запомню это как отличный вариант, если вы не против установки.
Спасибо за подсказку. Кажется, это работает очень хорошо для меня. На самом деле мне нравится подход rlwrap к подходу Ensime, потому что он дает мне историю команд. В настоящее время единственным оставшимся ограничением для вызова REPL через Emacs с использованием подхода rlwrap является невозможность использования табуляции. – nomad
Как вы получили завершение табуляции в REPL через emacs? – CodeKingPlusPlus
Вы можете установить ENSIME и follow instructions. Я не знаю, как вы ссылаетесь на REPL, но REPL вызывается из ENSIME (он позволяет перемещать курсор назад и удалять символы, которые я проверил).
Спасибо за подсказку. Похоже, что вызов REPL из Ensime разрешает эту проблему, но он вводит несколько других. В частности, REPL, вызванный с помощью Ensime, не имеет истории команд и, похоже, не способен выполнить табуляцию. – nomad
+1 для ENSIME, ENSIME классно –
- 1. Scala REPL in Gradle
- 2. Unicode Regex in Scala REPL
- 3. Невозможно поднять scala-ensime REPL в emacs
- 4. REPL на консоли emacs
- 5. Очистить emacs REPL buffer
- 6. Custom Scala REPL Issues
- 7. Scala REPL Remove Dependency
- 8. Запустить Scala REPL программно?
- 9. WeakReference и Scala REPL
- 10. Scala REPL дополнительные баночки
- 11. emacs cider clear REPL buffer
- 12. В чем разница между Clojure REPL и Scala REPL?
- 13. scala REPL медленный на vista
- 14. print output of execution in cider repl
- 15. «read» in Node.js REPL
- 16. Python REPL in Django
- 17. settings.maxPrintString для Scala 2.9 REPL
- 18. Clojure & ClojureScript REPL (emacs + cider + boot)
- 19. Как автоматизировать загрузку leiningen repl из Emacs?
- 20. scala api document в REPL
- 21. Расход ресурсов системы Scala REPL
- 22. Запуск сценария для scala REPL
- 23. Запуск scala REPL от градации?
- 24. Ошибка созданного JLineReader (Scala REPL)
- 25. Эксплуатационная перегрузка в Scala REPL
- 26. Scala REPL - Показать список [String]
- 27. Clojure Emacs Подключение к удаленному REPL
- 28. Кольцо с перезарядкой в Emacs Cider REPL
- 29. Emacs Lisp: Как, интерактивный буфер с REPL?
- 30. Как настроить Clojurescript REPL с emacs?
Как вы начинаете REPL в Emacs? – leedm777
Я открываю новый буфер с ansi-term. Затем в этом терминальном буфере я запускаю REPL, вызывая непосредственно «scala» или используя консоль sbt. В любом случае эта проблема возникает. – nomad
Возможно, вам удастся открыть новый буфер с оболочкой и запустить scala или sbt из оболочки. – leedm777