source - ¿Cómo hacer referencia al archivo que se está cargando actualmente en Emacs Lisp?
emacs source code (1)
Mx describe-variable load-file-name
load-file-name is a variable defined in `C source code''.
Documentation:
Full name of file being loaded by `load''.
También podría interesarle la función de symbol-file
, que le indicará el nombre de archivo absoluto en el que se definió una función o variable especificada.
Si quieres ser elegante, puedes verificar la variable de load-in-progress
. Si eso es nil
, entonces no hay carga en progreso (y se supone que estás siendo eval
en un buffer). En ese caso, podría intentar (buffer-file-name)
obtener el nombre del archivo.
Estoy buscando incluir una referencia a un archivo que no sea elisp (un pequeño programa de Python), y me gustaría poder decir "está en el mismo directorio que el archivo actual, pero con un nombre de archivo diferente". En muchos lenguajes de scripting, hay cosas como __FILE__
(en PHP) para obtener una ruta de acceso absoluta al archivo actual.
Si el archivo que se incluirá está en la load-path
, entonces puedo encontrarlo con (locate-library "file.py" t)
, pero estoy atascado si el archivo no está en la ruta de carga.
Entonces, ¿hay alguna manera de que un archivo Emacs Lisp descubra su propia ruta absoluta (cuando se carga, no se visita)?