Ich verwende rlwrap, aber ich habe keine Tabulator-Vervollständigung, und Zeichen mit Akzenten werden verstümmelt. Dies ist auf OSX 10.6 in Terminal.app.
Antworten
Zu viele Anzeigen?ClojureX versucht, genau das zu sein, was Sie als OS X-Benutzer wollen. Ich habe selbst keine Erfahrung damit (ich bin Linux-Benutzer), aber ich habe den Eindruck, dass die ClojureX-Leute bereit sind, Ihnen zu helfen, wenn Sie auf seltsame Probleme stoßen (Zeichenmanipulation? Das verstehe ich nicht, mit oder ohne rlwrap...).
Update: Hier ist ein Link zu eine Ankündigung in der Clojure-Gruppe re: einige aktuelle Änderungen in ClojureX...
Es gibt eine zweite Option für Readline-ähnliche Funktionalität in JVM-basierten Konsolenanwendungen -- jline . Verwenden Sie etwas wie
java -cp $CLASSPATH jline.ConsoleRunner clojure.main
(mit jline.jar, enthalten in $CLASSPATH
natürlich), wenn Sie es ausprobieren möchten.
Ich glaube auch nicht, dass ich jemals von Tabulator-Vervollständigung in eigenständigen Clojure REPLs gehört habe. Die meisten Leute verwenden Emacs / Aquamacs + SLIME, Vimclojure oder eine Java-IDE mit einem Clojure-Plugin für solche Dinge. Nun, einige andere Leute haben schon davon gehört (siehe Brians Antwort). Und ich habe inzwischen gefunden diese Beschreibung wie man die Tabulatorvervollständigung mit jline einrichtet. Und Ich habe inzwischen die Quellen für ClojureX überprüft - es richtet die Tabulatorvervollständigung für Sie ein. Das macht diesen Teil meiner ursprünglichen Antwort zu einem kleinen Schnitzer, schätze ich... Aber die Tatsache bleibt, dass ClojureX eine sehr sichere Sache ist, die Ihnen die Mühe ersparen kann, Dinge selbst zu konfigurieren.
Verwenden Sie die -f
Flag zu rlwrap hinzufügen, um die Tabulatorvervollständigung zu aktivieren. Es wird allerdings eine statische Vervollständigung sein, basierend auf einer statischen Liste von Symbolen in einer von Ihnen angegebenen Datei. Wenn Sie dynamische Vervollständigung (basierend auf jedem Symbol, das derzeit in Ihrem laufenden REPL definiert ist), sollten Sie versuchen, Emacs + SLIME oder gleichwertig.
Auf jeden Fall gibt es eine Möglichkeit, eine Liste von Symbolen zum Ausfüllen mit der Tabulatortaste zu erstellen. Sie werden diese Datei von Zeit zu Zeit neu generieren müssen, da dem Clojure-Kern in jeder Version neue Symbole hinzugefügt werden. (Dieser Code funktioniert mit bleeding edge clojure-contrib; clojure.contrib.io
wurde genannt duck-streams
in früheren Versionen).
user> (use 'clojure.contrib.io)
nil
user> (with-out-writer "/home/user/.clj-tabcompletion"
(doseq [[sym _] (ns-publics 'clojure.core)]
(println sym)))
nil
Dann:
$ 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
Wenn Ihr Terminal Zeichen mit Akzenten verfälscht, haben Sie wahrscheinlich ein Kodierungs- oder Gebietsschema-Problem. Bei mir funktioniert es einwandfrei. Ich benutze kein OS X und weiß nicht, welches Terminal Sie benutzen, daher kann ich Ihnen nicht helfen. In der Konsole unter Linux, innerhalb von rlwrap:
user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ")
àèìòùáéíóúäëïöüâêîôûãõñ
nil
user=> (println "")
nil