Как обратиться к файлу, загружаемому в настоящее время в Emacs Lisp?
Я хочу включить ссылку на не-elisp файл (небольшую программу Python) и хотел бы сказать "он находится в том же каталоге, что и текущий файл, но с другим именем файла." Во многих сценариях есть такие вещи, как __FILE__
(в PHP) для получения абсолютного пути к текущему файлу.
Если файл, который будет включен, находится в load-path
, тогда я могу найти его с помощью (locate-library "file.py" t)
, но я как бы застрял, если файл не находится в пути загрузки.
Итак, есть ли способ для файла Emacs Lisp узнать свой собственный абсолютный путь (при загрузке, а не в посещении)?
Ответы
Ответ 1
M-x 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'.
Вы также можете быть заинтересованы в функции symbol-file
, которая сообщит вам абсолютное имя файла, в котором определена определенная функция или переменная.
Если вы хотите получить фантазию, вы можете проверить переменную load-in-progress
. Если это nil
, то загрузка не выполняется (и вы предположительно являетесь eval
'd в буфере). В этом случае вы можете попробовать (buffer-file-name)
получить имя файла.