Frage

Ich verwende rlwrap, aber ich habe keine Tab-Vervollständigung und Zeichen mit Akzenten verstümmelt bekommen. Dies ist auf OSX 10.6 in Terminal.app.

War es hilfreich?

Lösung

Verwenden Sie die -f Flag auf rlwrap Tabulatorvervollständigung zu ermöglichen. Es wird statisch Abschluss sein, obwohl auf der Grundlage einer statischen Liste von Symbolen in irgendeiner Datei, die Sie angeben. Wenn Sie die dynamische Abschluss (auf jedem Symbol basiert, die derzeit in der laufenden REPL definiert ist) wollen, sollten Sie Emacs + SLIME versuchen oder gleichwertig.

Auf jedem Fall, hier ist eine Möglichkeit, eine Liste von Symbolen Tab-Vervollständigung zu erzeugen. Sie müssen diese Datei von Zeit zu Zeit regenerieren, weil neue Symbole zu Clojure Kern in jeder Version hinzugefügt werden. (Dieser Code funktioniert mit bleeding edge clojure-contrib;. clojure.contrib.io hieß 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 Mangeln, die Sie wahrscheinlich eine Codierung oder locale Problem haben. Es funktioniert gut für mich. Ich benutze OS X nicht und weiß nicht, was Terminal Sie verwenden, so kann ich nicht helfen. In Konsole in Linux, innerhalb rlwrap:

user=> (println "àèìòùáéíóúäëïöüâêîôûãõñ")
àèìòùáéíóúäëïöüâêîôûãõñ
nil
user=> (println "牛が牧場で草を食べている。")
牛が牧場で草を食べている。
nil

Andere Tipps

ClojureX versucht, gerecht zu sein, was Sie OS X-Benutzer möchten. Ich habe keine Erfahrung damit habe mich (ich bin ein Linux-Benutzer), aber ich habe den Eindruck, dass die ClojureX Leute bereit sein werden, Ihnen zu helfen, wenn Sie seltsame Probleme laufen (Charakter Mangeln? Ich nicht bekommen dass mit oder ohne rlwrap ...).

Update: Hier ist ein Link zu einer Mitteilung auf die Clojure Gruppe re: einige der jüngsten Änderungen in ClojureX ...

Es gibt eine zweite Möglichkeit für Readline--ähnliche Funktionalität in JVM-basierte Konsole apps - jline . Verwenden Sie so etwas wie

java -cp $CLASSPATH jline.ConsoleRunner clojure.main

(mit jline.jar in $CLASSPATH enthalten, natürlich), wenn Sie möchten, dass es einen Versuch geben.

Auch ich glaube nicht, dass ich jemals von Tabulatorvervollständigung in Stand-alone-Clojure REPLs gehört habe. Die meisten Leute benutzen Emacs / Aquamacs + SLIME, Vimclojure oder eine Java-IDE mit einem Clojure-Plugin für solche Sachen. Nun, einige andere Leute über sie in Ordnung gehört haben (Brians Antwort sehen). Und ich habe da gefunden diese Beschreibung wie Tabulatorvervollständigung mit jline einzurichten. und Ich habe die Quellen für ClojureX seit geprüft - es Tabulatorvervollständigung für Sie nicht eingerichtet. Das macht diesen Teil meiner ursprünglichen Antwort ein bisschen ein Fehler, ich denke ... Aber die Tatsache bleibt, dass ClojureX eine sehr sichere Wette ist, die Sie sich die Mühe zu konfigurieren, Dinge selbst können speichern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top