2010-02-23 3 views

ответ

2

Используйте флаг -f, чтобы включить вкладку, чтобы включить вкладку. Это будет статическое завершение, хотя на основе статического списка символов в определенном вами файле. Если вам требуется динамическое завершение (на основе любого символа, который в настоящее время определен в вашем REPL), вы должны попробовать Emacs + SLIME или эквивалент.

В любом случае, это один из способов генерации списка символов для завершения табуляции. Вам придется время от времени регенерировать этот файл, потому что новые символы добавляются в ядро ​​Clojure в каждой версии. (Этот код работает с кровотечением края Clojure-вно, 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 
3

ClojureX пытается быть тем, кем вы хотите пользователей OS X. У меня нет опыта с ним (я - пользователь Linux), но у меня создается впечатление, что люди ClojureX будут готовы помочь вам, если у вас появятся странные проблемы (искажение характера? Я не получаю что, с или без rlwrap ...).

Update: Вот ссылка на an announcement on the Clojure group ре: некоторые недавние изменения в ClojureX ...

Там есть второй вариант для Readline-как функциональности в консольных приложениях JVM на базе - jline. Используйте что-то вроде

java -cp $CLASSPATH jline.ConsoleRunner clojure.main 

(с jline.jar включенную в $CLASSPATH, конечно), если вы хотите, чтобы дать ему попробовать.

Кроме того, я не думаю, что когда-либо слышал о завершении вкладки в автономных REPL-системах Clojure. Большинство людей используют Emacs/Aquamacs + SLIME, Vimclojure или некоторую Java IDE с плагином Clojure для подобных вещей. Ну, некоторые другие слышали об этом в порядке (см. Ответ Брайана). И с тех пор я нашел this description о том, как настроить вкладку с помощью jline. И С тех пор я проверял источники для ClojureX - он установил для вас завершение табуляции. Это делает эту часть моего первоначального ответа немного грубой, я думаю ... Но факт остается фактом: ClojureX - это очень безопасная ставка, которая может спасти вам проблему настройки самих вещей.

Смежные вопросы