2010-11-03 8 views
11

Desde dentro de un archivo de lisp que se está cargando y ejecutando con emacs -l path/to/script/foo.el ¿puedo obtener la ruta al archivo que se está ejecutando?Obtener la ruta al archivo de script de emacs actual cuando se carga con el parámetro -l

Por ejemplo, ¿hay alguna forma de determinar qué es path/to/script dentro de foo.el?

No tengo mucha experiencia con lisp, así que sea amable con sus soluciones.

Emacs 22.3.1 en Windows 7

+0

posible duplicado de [? ¿Cómo hacer referencia al archivo que se esté cargado en Emacs Lisp] (http://stackoverflow.com/questions/ 1344747/how-to-refer-the-file-currently-being-loaded-in-emacs-lisp) –

+0

@Trey Jackson, estoy de acuerdo en que está cerca pero me hubiera llevado un poco más de tiempo localizar la función de directorio de nombre de archivo. –

Respuesta

24

La variable load-file-name está ligado al nombre del archivo que se está cargando. Para obtener el directorio, usted sólo tiene que utilizar file-name-directory, así:

(file-name-directory load-file-name) 
+0

Perfecto, gracias! –

+0

@JesseVogt No tan * perfecto *; 'eval' it en un archivo de paquete' require'd: 'Depurador ingresado - Error de Lisp: (wrong-type-argument stringp nil) file-name-directory (nil) ' – yPhil

+0

@yPhil La llamada al 'archivo- name-directory' requiere que se pase una cadena, aparentemente lo llamaste con un 'nil'. La variable solo se establece durante una llamada a 'load', que es el contexto de la pregunta. –

Cuestiones relacionadas