5 Stimmen

Was ist der empfohlene Weg der Ausführung eines Stand-alone-Clojure REPL?

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.

3voto

Michał Marczyk Punkte 82196

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.

2voto

Brian Carper Punkte 68444

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X