Как обратиться к файлу, загружаемому в настоящее время в 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) получить имя файла.