Установка функции байтового компиляции целевого файла

Я хочу установить каталог назначения для компиляции байтов emacs lisp, используя относительный путь, например ../foo. Я понял, что должен использовать byte-compile-dest-file-function, но не знаю, как его установить. Как я могу установить это?


person sawa    schedule 19.12.2012    source источник


Ответы (2)


Чтобы установить переменную byte-compile-dest-function, вы можете использовать либо customize-variable в интерактивном режиме, либо setq в файле инициализации. Поскольку вам придется написать функцию, выполняющую работу в любом случае, я бы рекомендовал последнюю, чтобы все было в одном и том же месте в вашем файле инициализации.

Например:

(defun my-dest-function (filename)
  (concat (file-name-directory filename)
          "../"
          (file-name-sans-extension (file-name-nondirectory filename))
          ".elc"))
(setq byte-compile-dest-file-function 'my-dest-function)
person François Févotte    schedule 19.12.2012

Вы можете найти его, используя C-h v, за которым следует имя этой переменной.

(defcustom byte-compile-dest-file-function nil
  "Function for the function `byte-compile-dest-file' to call.
It should take one argument, the name of an Emacs Lisp source
file name, and return the name of the compiled file."
  :group 'bytecomp
  :type '(choice (const nil) function)
  :version "23.2")

Вы можете видеть, что это настраиваемая переменная, поэтому вы можете изменить ее значение на «функцию».

РЕДАКТИРОВАТЬ: я не уверен, что это переменная, которую вы хотите изменить. На самом деле, вы можете видеть, что он часто имеет дело с переменными каталогами, я не понимаю, как установить определенный каталог, в котором должны находиться все .elc.

person PascalVKooten    schedule 19.12.2012