2009-12-26 9 views
9

Estoy usando emacs con clojure-swank y limo e intento establecer mi entorno de desarrollo. Y me encontré con un problema. Cuando comienzo una réplica, me quedo atrapado en un directorio desconocido que me impide cargar mi espacio de nombres. Porque el clojure repl no puede encontrar el archivo correcto.Clojure emacs slime + swank directory question

¿Alguien sabe cómo cambiar el directorio actual?

PD: Acabo de empezar a usar emacs y baba, así que soy un novato.

Respuesta

6

Si desea cambiar la noción del limo del directorio actual, presione ,cd<CR> (<CR> = Enter) y escriba la ruta.

Sin embargo, esta no es realmente la solución adecuada al problema. La solución adecuada implica configurar el classpath para que pueda (use 'your.namespace). Con este fin, me pregunto si this very long answer he proporcionado a una pregunta sobre la configuración de la ruta de clase adecuada podría ser útil ... :-)

Por cierto, me opongo a un tanto soluciones que implican add-classpath, ya que actualmente está marcado como obsoletos y nunca se suponía que se confiara en primer lugar ... Aunque, por otro lado, ciertamente puede funcionan perfectamente bien y vale la pena saberlo en caso de que pueda ser útil como una inyección de ruta de clase rápida y sucia truco.

Ahora si quieres un entorno de desarrollo basado en SLIME realmente agradable, me gustaría señalarte una muy buena función elisp clojure-project de Phil Hagelberg que establece todas las variables relevantes y lanza SLIME en el directorio principal de un proyecto (para ser suministrado de forma interactiva). Se ha publicado en el grupo Clojure, de hecho here's a link en la copia de ese mensaje del Archivo de Correo. Tenga en cuenta que hay una cosa que necesita corrección allí: swank-clojure-jar-path debe establecerse en la ruta completa a clojure.jar. De lo contrario, es una herramienta fantástica.

En realidad mencioné esa función en this response a una pregunta sobre la gestión de la ruta de clases al usar Clojure y Emacs. Las otras respuestas también podrían ser interesantes.

Y si usted está recién comenzando a utilizar limo, no ver el video limo, enlazados desde SLIME's homepage que ahora está disponible en un enlace publicado por Michiel en los comentarios. Es una muy buena presentación. :-)

+0

Voy a probar la solución de función de proyecto clojure. Pero, ¿en qué archivo agrego el código? – MrHus

+0

El enlace al video de la página de inicio SLIME está muerto. El video todavía se puede encontrar aquí: http://www.guba.com/watch/3000054867 –

+0

Oh, nunca me di cuenta ... Gracias, Michiel. Voy a editar en consecuencia. @MrHus: debe agregarlo a algún archivo que se cargue cuando inicie Emacs, como '~/.emacs' (en * nix) /' _emacs' (en Windows; creo que debe poner esto en el directorio de su perfil, por ej. 'C: \ Documents and Settings \ yourusername \ _emacs', pero estoy completamente seguro, google alrededor si esto no funciona). Solo recuerde corregir 'swank-clojure-jar-path'. Por cierto, a juzgar por su pregunta, es recomendable buscar el 'emacs-starter-kit' de Phil Hagelberg; también hay un screencast relacionado en http://peepcode.com/. –

4

Respuesta corta:
(load-file "full-path-to-definition")

Respuesta larga: Esto es lo que mi proceso de arranque se parece a:

En ~/.clojure/user.clj (este archivo es de ejecución automática cuando se arranca el limo/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")

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

archivo de paquete (s) está en /workspace/my/package.clj

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

6

Leiningen es una nueva herramienta de construcción de Clojure que se preocupa por la clase para usted. Usted configura un archivo de proyecto simple en el directorio raíz del proyecto para especificar la clase principal de su proyecto, y automáticamente descubre todos los archivos JAR en su directorio lib y los carga por usted.

Ahora solo escribo "lein swank" en una línea de comando y luego M-x slime-connect en Emacs, y todo funciona. (Esto podría automatizarse fácilmente con un poco de Elisp.)

Más información en this blog post.

+0

Esta es realmente una muy buena solución. Ahora puedo seguir trabajando con Textmate. Gracias. – MrHus

1

El mejor enfoque que he encontrado al usar Emacs, SLIME y swank-clojure es usar la función (Emacs Lisp) swank-clojure-project. A partir de la documentación: (PATH-clojure-proyecto Swank)

ruta de clase de configuración para un proyecto clojure e inicia una nueva sesión de baba. Elimina la sesión SLIME existente, si corresponde.

Si realiza un "proyecto M-x swank-clojure", le solicitará de forma interactiva el directorio de su proyecto; una vez que lo haya seleccionado, todos los archivos jar en un subdirectorio lib, así como las carpetas src y classes se agregarán a su classpath. También honrará una estructura de directorios Maven/lein, en otras palabras: generalmente solo funcionará.

Si cambia algo, p. agregue un nuevo archivo jar, simplemente haga swank-clojure-project nuevamente.

Cuestiones relacionadas