Emacs 24.3 или ниже
Не существует встроенного способа предотвращения загрузки этих старых файлов, но есть простые способы избавиться от них.
- Вы можете перекомпилировать весь каталог Elpa по телефону:
M-x byte-recompile-directory RET ~/.emacs.d/elpa/
.
Это должно избавиться от устаревших файлов.
- Вы можете использовать
пакет автоматической компиляции и активировать,
auto-compile-on-load-mode
который может компилировать файлы перед их загрузкой.
Emacs 24.4
Да и получается довольно просто. load-prefer-newer
Переменная служит именно этой цели.
(setq load-prefer-newer t)
К сожалению, это не будет работать, если какой-то код специально нацелен на
.elc
файл, например (load "server.elc")
. Но этого должно быть достаточно, если вы используете require
s или звоните load
без суффикса, что и должно быть.
Из документа:
load -fer-newer - это переменная, определенная в lread.c.
Его значение равно нулю
Документация:
Не ноль означает, что загрузка предпочитает самую новую версию файла.
Это применимо, когда суффикс имени файла не указан явно, а load пытается использовать различные возможные суффиксы (см. Load-суффиксы и load-file-rep-суффиксы). Обычно он останавливается на первом существующем файле, если вы явно не укажете один или другой. Если этот параметр не ноль, он проверяет все суффиксы и использует тот файл, который является самым новым.
Обратите внимание, что если вы настроите это, очевидно, что это не повлияет на файлы, которые загружаются до прочтения ваших настроек!
auto-compile
Библиотеку в Emacs 24.4+, а также ниже. Это реальное решение «сконфигурируй и забудь».load-prefer-newer
только гарантирует, что вы продолжите выполнять медленный не скомпилированный код после того, как ваш скомпилированный код устареет.