Я использую rlwrap, но у меня нет заполнения клавишей Tab, и символы с диакритическими знаками искажаются. Это находится на OSX 10.6 в Terminal.app.
Используйте флаг -f
для rlwrap, чтобы включить завершение табуляции. Однако это будет статическое завершение, основанное на статическом списке символов в указанном вами файле. Если вы хотите динамическое завершение (на основе любого символа, который в настоящее время определен в вашем запущенном REPL), вам следует попробовать Emacs + SLIME или эквивалент.
В любом случае, вот один из способов создать список символов для заполнения табуляции. Вам придется время от времени восстанавливать этот файл, потому что новые символы добавляются в ядро Clojure в каждой версии. (Этот код работает с новейшим clojure-contrib; clojure.contrib.io
назывался duck-streams
в более ранних версиях.)
user> (use 'clojure.contrib.io)
nil
user> (with-out-writer "/home/user/.clj-tabcompletion"
(doseq [[sym _] (ns-publics 'clojure.core)]
(println sym)))
nil
Затем:
$ rlwrap -f ~/.clj-tabcompletion java -jar clojure.jar
Clojure 1.2.0-master-SNAPSHOT
user=> def<TAB>
definline defmacro defmethod defmulti defn defonce defprotocol defstruct deftype
user=> def
Если ваш терминал является искажая символы с диакритическими знаками, у вас, вероятно, есть проблема с кодировкой или локалью. Он отлично работает для меня. Я не использую OS X и не знаю, какой терминал вы используете, поэтому ничем не могу помочь. В Konsole в Linux внутри rlwrap:
user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ")
àèìòùáéíóúäëïöüâêîôûãõñ
nil
user=> (println "牛が牧場で草を食べている。")
牛が牧場で草を食べている。
nil
ClojureX пытается быть именно тем, что вы хотите для пользователей OS X. У меня лично нет опыта с этим (я пользователь Linux), но у меня сложилось впечатление, что люди ClojureX будут готовы помочь вам, если вы столкнетесь со странными проблемами (искажение персонажа? Я не понимаю что, с rlwrap или без ...).
Обновление: вот ссылка на объявление о группе Clojure относительно недавних изменений в ClojureX ...
Есть второй вариант для функциональности, подобной строке чтения, в консольных приложениях на основе JVM - - jline . Используйте что-нибудь вроде
java -cp $CLASSPATH jline.ConsoleRunner clojure.main
(конечно, с jline.jar, включенным в $ CLASSPATH
), если хотите попробовать.
Кроме того, я не думаю, что когда-либо слышал о завершении табуляции в автономных REPL Clojure. Большинство людей используют Emacs / Aquamacs + SLIME, Vimclojure или какую-нибудь Java IDE с плагином Clojure для подобных вещей. Ну, некоторые другие люди слышали об этом хорошо (см. Ответ Брайана). И с тех пор я нашел это описание того, как настроить завершение табуляции с помощью jline. И с тех пор я проверил исходники для ClojureX - он настраивает автозаполнение вкладок для вас. Полагаю, это делает эту часть моего первоначального ответа немного грубой ... Но факт остается фактом: ClojureX - очень безопасная ставка, которая может избавить вас от необходимости настраивать вещи самостоятельно.