emacs - una - ruta relativa script
Ruta relativa a la ruta absoluta en Elisp (3)
Puede usar la función expand-file-name
para convertir un nombre de archivo o ruta relativa en un nombre de archivo / ruta de acceso absolutos. Mire aquí para obtener información adicional.
Al tener una ruta relativa, ¿cómo puedo convertirla en una ruta absoluta desde la ubicación donde está el archivo elisp que estoy cargando? Es decir, tengo un archivo elisp que estoy cargando, tiene una ruta relativa y necesito uno completo.
Terminé usando:
(expand-file-name "relative/path" (file-name-directory load-file-name))
''file-truename
De la documentación:
Devuelve el nombre verdadero de FILENAME, que debe ser absoluto. El nombre verdadero de un nombre de archivo se encuentra persiguiendo enlaces simbólicos tanto al nivel del archivo como a nivel de los directorios que lo contienen, hasta que no quedan enlaces en ningún nivel.
La otra solución ofrecida (''expand-file-name'') deja enlaces simbólicos en su lugar, que pueden ser o no lo que usted desea. ''file-truename utiliza'' expand-file-name, por lo que ambos determinarán la ruta relativa del directorio predeterminado para el búfer (que es lo que estás pidiendo).
Después de ver el comentario / pregunta con una respuesta diferente, el problema es que el directorio predeterminado es el del buffer que está llamando ''load''.
Afortunadamente, hay una variable que ''carga conjuntos que almacena la ruta al archivo que se está cargando. Prueba este fragmento de código:
;; this is in the file being loaded
(let ((default-directory (file-name-directory load-file-name)))
(file-truename "blih"))