Стандартный REPL Clojure с редактором буфера?

Я не ищу IDE или встр.расх. Я просто хотел спросить, знает ли кто-нибудь, возможно ли иметь редактор буфера в REPL, как известно из "psql" или некоторых оболочек *nix.

в psql, например, вы просто вводите "e", и вы получите последнюю команду в своем редакторе, и uppon exit она будет выполнена.

это было бы здорово для Clojure repl.

$ java -cp jline.jar:clojure-1.3.0.jar jline.ConsoleRunner clojure.main

Итак, есть ли такая функция? Где он должен быть реализован, в jline?

устранение:

rlwrap делает трюк.

мне пришлось скомпилировать readline ftp://ftp.gnu.org/gnu/readline/ а потом rlwrap http://utopia.knoware.nl / ~клуб / rlwrap / #rlwrap.

после этого я мог бы использовать следующий ярлык для запуска редактора.

Ctrl + ^

rlwrap -m -- java -cp clojure-1.3.0.jar clojure.main

для использования с leiningen на Mac OSX мне пришлось изменить следующий:

lein 1.6.2
*** 226,233 ****
              rlwrap -m -q '"' echo "hi" > /dev/null 2>&1
              if [ $? -eq 0 ]; then
                  RLWRAP="$RLWRAP -r -m -q '"'"
-             else
-                 RLWRAP="$RLWRAP -m --"
              fi
          fi
      fi
--- 226,231 ----

и экспорта RLWRAP_EDITOR

export RLWRAP_EDITOR="vim +%L"

2 ответов


rlwrap

есть несколько способов достичь того, что вы хотите, но rlwrap binary делает то, что вам нужно. У меня также были некоторые проблемы с версиями jline в прошлом на Mac OS X, поэтому я перестал его использовать.

когда я набираю "clj" в своем терминале, он действительно выполняет REPL, обернутый rlwrap через следующий скрипт bash в /usr/local/bin/clj:

#!/bin/sh
# Runs clojure.
# With no arguments, runs Clojure's REPL.

CLOJURE=$CLASSPATH:/usr/local/clojure/1.3.0/clojure-1.3.0.jar

rlwrap java -cp $CLOJURE clojure.main "$@"

ставим скрипт в любом месте на вашем пути, чтобы использовать.

наконец, вам не нужен сценарий, у меня просто есть это для удобства. Если rlwrap находится в вашей системе, а clj находится на вашем пути, вы можете просто ввести:

rlwrap clj

дальнейшее чтение из книги Clojure wiki:повышение Clojure REPL с rlwrap


посмотреть мои ответы на вопросы один REPL, чтобы связать их всех? и Как установить Clojure на Ubuntu 10.04 из репозитория Github без clojure.Джар. Основные моменты:

  • не "устанавливать" clojure вообще. Установите Leiningen и позвольте ему управлять версиями clojure, которые у вас есть, а также получать пути к классам для repl или другого использования.
  • если вы должны запустить clojure вручную, используйте rlwrap или какой-либо другой readline программа.