2012-02-23 23 views
7

En el pasado, yo uso el siguiente script para iniciar SBCL:¿Cómo configurar el directorio actual de SBCL usando slime?

breakchars="(){}[],^%$#@\"\";:''|\\" 
cd /media/E/work 

exec rlwrap --remember -c -b "$breakchars" -f "$HOME"/.sbcl_completions sbcl --noinform --userinit "$HOME"/.sbclrc "[email protected]" 

Ahora, cuando el uso de limo en emacs, i doonot sabe cómo configurar el directorio actual del SBCL?

¡Cualquier sugerencia es apreciada!

Respuesta

5

¿Por qué necesita cambiar el directorio actual de SLIME? Supongo que no es porque quiera visitar un archivo fuente Lisp del sistema que está escribiendo actualmente, sino porque quiere escribir código que lea o escriba un archivo que contenga datos.

Si es así, probablemente sea mejor intentar local-projects en Quicklisp. Junto con quickproject, le permite crear fácilmente sistemas, que luego puede cargar utilizando (ql:quickload 'my-system) o incluso (require 'my-system).

Si necesita hacer referencia a un archivo de datos ubicado en relación con la raíz del sistema my-system (simplemente usando el nombre del último párrafo para mantener los ejemplos consistentes), puede usar asdf:system-relative-pathname. Por ejemplo, (asdf:system-relative-pathname 'my-system "files/data.txt").

Claro, la implementación es un negocio completamente diferente. Mi solución es mirar how the running executable was called para determinar si el código está implementado o en desarrollo. Si está en desarrollo, uso asdf:system-relative-pathname. Si se implementa, determino la ruta de los archivos en función de la ruta del ejecutable (mi 'script de compilación' copia estos archivos al lado de los ejecutables al construir el proyecto).

Desde que comencé a utilizar este enfoque, mi necesidad de cd -ing en SBCL se redujo a cero. cd, no era difícil, pero es bueno tener menos cosas de qué preocuparse.

8

SLIME inicia el sistema Lisp con el directorio actual tomado del directorio donde está el archivo asociado con el búfer en uso. Normalmente abriría un archivo donde desea que SLIME comience primero.

Si quiere cambiar el directorio actual ejecutando un Lisp, entonces la mejor manera es usar ,cd shortcut. Esto supone que tiene una configuración slime-repl adecuada, ya que las instalaciones actuales de Slime son muy mínimas por defecto. Consulte contributed packages, es probable que desee al menos slime-fancy metapackage.

+1

slime-cd es una función Lisp compilada interactiva en 'slime.el '. (DIRECTORIO slime-cd) Haga que DIRECTORIO se convierta en el directorio actual de Lisp. Devuelve lo que sea swank: set-default-directory returns. –

+0

Esto fue útil. Sin embargo, el enlace al "acceso directo de cd" está muerto. ¿Qué tenías en mente? – MadPhysicist

Cuestiones relacionadas