Оболочка Windows cmd плохо взаимодействует с реплоями Clojure и Scala - PullRequest
1 голос
/ 26 марта 2012

Я пишу оболочку cmd, которая должна перехватывать потоки для любого приложения cmd так же, как и любая другая оболочка cmd.Пока что у меня все получилось, и большинство приложений работают нормально, например, ping и другие.Однако, когда я запускаю Clojure или Scala REPL, сначала все в порядке, но когда я вхожу в многострочную функцию или когда я получаю ошибку, обмен сообщениями прекращается, как будто что-то застряло в канале.Любое общение между REPL и моей оболочкой прекращается.Поскольку я направляю потоки stdout и stderr всех приложений, которые запускаю через обертку, мне неясно, что делать в этой ситуации, почему вывод не перехватывается?

UPDATE: Пользователь om-nom-nom предлагает новую информацию, которая показывает, что в REPL Scala и Clojure используется jline для расширенной обработки взаимодействия с консолью.Так что возникает несколько новых вопросов: почему работа с jline отличается от работы со стандартными потоками?Есть ли способы перенаправить потоки Jline таким же образом, как обычные потоки?Каков наилучший способ работы с Jline, как это?

1 Ответ

0 голосов
/ 28 марта 2012

Рекомендую: https://github.com/Raynes/conch, простая и гибкая библиотека для раскроя в Clojure

...