2009-12-26 15 views
9

Ich benutze Emacs mit Clojure-Swank und Schleim und versuche, meine Entwicklungsumgebung zu setzen. Und ich stieß auf ein Problem. Wenn ich eine Replik starte, stecke ich in einem unbekannten Verzeichnis und kann meinen Namespace nicht laden. Weil der clojure repl die richtige Datei nicht finden kann.Clojure Emacs Schleim + Swank-Verzeichnis Frage

Kann jemand das aktuelle Verzeichnis ändern?

PS: Ich habe gerade angefangen Emacs und Schleim zu verwenden, also bin ich ein Noob.

Antwort

6

Wenn Sie Möchten Sie Slimes Vorstellung des aktuellen Verzeichnisses ändern, drücken Sie ,cd<CR> (<CR> = Enter) und geben Sie den Pfad ein.

Dies ist jedoch nicht die richtige Lösung für das Problem. Die richtige Lösung beinhaltet das Einrichten des Klassenpfads, so dass Sie (verwenden Sie 'your.namespace). Zu diesem Zweck frage ich mich, ob this very long answer ich eine Frage zur Einrichtung der Klassenpfad richtig zur Verfügung gestellt könnte hilfreich sein ... :-)

Übrigens, ich etwas Objekt zu Lösungen mit add-classpath, wie das derzeit als veraltet markiert ist und war nie in erster Linie auf Verlass sein ... Obwohl auf der anderen Seite, es sicherlich kann arbeiten perfekt gut und es ist wissenswert, nur für den Fall, dass es als eine schnelle und schmutzige Classpath Injektion nützlich sein könnte Spielerei.

Jetzt, wenn Sie eine wirklich schöne SLIME-basierte Entwicklungsumgebung wollen, möchte ich Sie auf eine sehr nette clojure-project elisp Funktion von Phil Hagelberg hinweisen, die alle relevanten Variablen einrichtet und SLIME im Hauptverzeichnis eines Projekts startet (interaktiv zu liefern). Es wurde in die Clojure-Gruppe geschrieben, in der Tat here's a link an die Kopie des Mail-Archivs dieser Nachricht. Beachten Sie, dass dort eine Sache korrigiert werden muss - swank-clojure-jar-path sollte auf den vollständigen Pfad zu clojure.jar gesetzt werden. Ansonsten ist es ein fantastisches Werkzeug.

Eigentlich habe ich diese Funktion in this response auf eine Frage über die Verwaltung der Klassenpfad bei der Verwendung von Clojure und Emacs erwähnt. Die anderen Antworten könnten ebenfalls interessant sein.

Und wenn Sie gerade erst SLIME zu verwenden beginnen, setzen Sie das SLIME Video sehen, verbunden von SLIME's homepage , die jetzt unter einem Link gepostet von Michiel in den Kommentaren zur Verfügung. Es ist eine sehr gute Einführung. :-)

+0

Ich werde versuchen, die Clojure-Projektfunktion Lösung. Aber in welcher Datei füge ich den Code hinzu? – MrHus

+0

Der Link zum Video von der SLIME Homepage ist tot. Das Video kann immer noch hier gefunden werden: http://www.guba.com/watch/3000054867 –

+0

Oh, habe ich nie bemerkt ... Danke, Michiel. Ich werde entsprechend bearbeiten. @MrHus: Sie müssen es zu einer Datei hinzufügen, die beim Start von Emacs geladen wird, wie '~/.emacs' (on * nix) /' _emacs' (unter Windows; ich glaube, Sie haben dies in Ihr Profilverzeichnis eingetragen, z 'C: \ Dokumente und Einstellungen \ yourusername \ _emacs', aber ich bin mir ganz sicher, google um, wenn das nicht funktioniert. Denken Sie daran, 'swank-clojure-jar-path' zu korrigieren. Übrigens, wenn man diese Frage stellt, sollte man Phil Hagelbergs "Emacs-Starter-Kit" nachschlagen; Es gibt auch einen verwandten Screencast auf http://peepcode.com/. –

4

Kurze Antwort:
(load-file "full-path-to-definition")

Lange Antwort: Hier ist, was meine Bootstrap-Prozess wie folgt aussieht:

In ~/.clojure/user.clj (diese Datei automatisch ausgeführt wird, wenn Sie Schleim booten/clojure):
(add-classpath "file://path/to/foo.jar") ; Include these jars in the classpath
(add-classpath "file://path/to/foo2.jar")
(load-file "file://workspace/bootstrap.clj")

In bootstrap.clj:
(compile 'my.package)

Package-Datei (en) ist /workspace/my/package.clj

In package.clj:
(ns my.package)
(defn foo [] (+ 2 2))

6

Leiningen ist ein neues Clojure-Build-Tool, das sich um Classpathing für Sie kümmert. Sie richten eine einfache Projektdatei im Stammverzeichnis des Projekts ein, um die Hauptklasse Ihres Projekts anzugeben, und automatisch erkennt es alle JARs in Ihrem lib-Verzeichnis und lädt sie für Sie.

Ich gebe jetzt einfach "Lein Swank" an einer Befehlszeile und dann M-X Slime-Connect in Emacs, und alles funktioniert einfach. (Dies könnte leicht mit ein wenig Elisp automatisiert werden.)

Weitere Informationen in this blog post.

+0

Das ist eigentlich eine wirklich gute Lösung. Jetzt kann ich weiter mit Textmate arbeiten. Vielen Dank. – MrHus

1

Der beste Ansatz, den ich bei der Verwendung von Emacs, SLIME und Swank-Clojure gefunden habe, ist das Swank-Clojure-Projekt (Emacs Lisp). Von seiner Dokumentation:

(Swank-clojure-Projekt PATH)

Setup-Classpath für ein clojure Projekt und startet eine neue SLIME Sitzung. Kehrt vorhandene SLIME-Sitzung, falls vorhanden.

Wenn Sie ein "M-x swank-clojure-Projekt" machen, werden Sie interaktiv auf Ihr Projektverzeichnis hingewiesen; Sobald Sie es ausgewählt haben, werden alle Klassen in einem Unterverzeichnis lib sowie der Ordner src und classes Ihrem Klassenpfad hinzugefügt. Es wird auch eine Maven/lein Verzeichnisstruktur respektieren, mit anderen Worten: es wird normalerweise einfach funktionieren.

Wenn Sie etwas ändern, z. Fügen Sie eine neue JAR-Datei hinzu, führen Sie einfach erneut das Swank-Clojure-Projekt aus.