2010-03-07 14 views
9

Próbuję dodać ścieżki do mojej ścieżki klas w REJONIE Clojure, którą skonfigurowałem w Emacs przy użyciu ELPA. Najwyraźniej nie jest to zmienna środowiskowa $ CLASSPATH, lecz zmienna swank-clojure-classpath, którą konfiguruje Swank. Ponieważ użyłem ELPA do zainstalowania Swank, Clojure, itp., Istnieje mnóstwo plików .el, które zajmują się wszystkim, zamiast mojego pliku .emacs. Niestety, nie wiem, jak zmienić teraz ścieżkę klas.Jak skonfigurować ścieżkę klas Clojure w Emacs po zainstalowaniu z ELPA?

Próbowałem użyć (setq 'swank-clojure-extra-classpaths (list ...)) zarówno przed, jak i po ELPA w moim .emacs, i próbowałem dodać ścieżki bezpośrednio do swank-clojure -classpath w .emacs, .emacs.d/init.el i .emacs.d/user/user.el, ale nic nie działa.

Ostatecznie próbuję dodać zarówno bieżący katalog "." oraz katalog, w którym przechowuje się moje programy Clojure. Zakładam, że to właśnie tu musi być "łęk-clojure" - to jest coś, co muszę tutaj ustawić. Dzięki za pomoc.

Odpowiedz

10

Jak mówi Mac, można użyć

M-x swank-clojure-project 

ustanowienie rEPL szlam do projektu Clojure; polecenie poprosi cię o katalog główny projektu i utworzy ścieżkę klas zawierającą różne katalogi, w tym src/lib/i zasoby/jeśli są obecne.

Ewentualnie, jeśli używasz Leiningen, które można uruchomić w terminalu poleceniem

$ lein swank 

od wewnątrz katalogu głównego projektu. Spowoduje to utworzenie standardowej ścieżki klasy projektu (jak wyżej).Stąd można podłączyć do tego procesu uruchomionego przez Emacsa za pomocą polecenia

M-x slime-connect 

Wreszcie trzecia opcja którą polecam jest podłączenie poprzez Emacs/śluzu (z M-x slime-connect) do procesu rozpoczętej przez własnego skryptu powłoki który określa niestandardowy zestaw argumentów wiersza poleceń JVM, np

#!/bin/bash 

java -server -cp "./lib/*":./src clojure.main -e "(do (require 'swank.swank) (swank.swank/start-repl))" 

Pozwala to na wyraźną kontrolę nad uruchomieniem maszyny wirtualnej i najprawdopodobniej jest podobne do tego, co i tak prawdopodobnie będzie trzeba zrobić przy produkcji.

3

Chcecie:

M-x swank-clojure-project 

Dodaje wszystkie słoiki w/lib reż.

Jeśli chcesz: użyć pliku Clojure (bar.clj), na przykład w/foo byś zrobił:

(ns foo 
    (:use foo.bar)) 
2

Niestety nie mogę pomóc w odpowiedzi, ale być może pytanie jest źle :

Ja sam nie zacząłem sesji clojure od wewnątrz Emacs od wieków. Myślę, że lepszym sposobem jest opisanie wszystkich twoich zależności w jednym miejscu (np. Maven pom.xml lub leiningen's project.clj), a następnie rozpoczęcie sesji swank z tymi zależnościami. To znaczy. dodaj bibliotekę swank-clojure do twoich (dev-) zależności, a następnie użyj lein swank lub maven swank (nie wiesz o ostatnim - nie korzystałeś zbyt długo i nie za chwilę) z wiersza poleceń, aby rozpocząć sesję swank i użyj M-x slime-connect dołączyć do tej sesji.

Zaletą jest to, że dostajesz wszystkie rzeczy w swojej klasie, których potrzebujesz - i nie więcej, więc nie możesz omyłkowo użyć czegoś z repliki, o której twój ostatni projekt nie wie.

This blog post gives a good summary how to do this right.

Powiązane problemy