Emacs 24.3 ou inferior
Não existe uma maneira integrada de impedir que esses arquivos antigos sejam carregados, mas existem maneiras fáceis de se livrar deles.
- Você pode recompilar todo o diretório ELPA chamando:
M-x byte-recompile-directory RET ~/.emacs.d/elpa/
.
Isso deve se livrar de arquivos desatualizados.
- Você pode usar o
pacote de compilação automática e ativar os
auto-compile-on-load-mode
arquivos que podem compilar antes de serem carregados.
Emacs 24.4
Sim, e acaba sendo bastante simples. A load-prefer-newer
variável serve exatamente a esse propósito.
(setq load-prefer-newer t)
Infelizmente, não funcionará quando algum código segmentar especificamente o
.elc
arquivo, como (load "server.elc")
. Mas deve ser o suficiente, desde que você esteja usando require
s ou chamando load
sem sufixo, o que você deveria.
Do documento:
load-prefer-newer é uma variável definida em lread.c.
Seu valor é nulo
Documentação:
Não nulo significa que o carregamento prefere a versão mais recente de um arquivo.
Isso se aplica quando um sufixo de nome de arquivo não é especificado explicitamente e o load está tentando vários sufixos possíveis (consulte load-sufixos e load-file-rep-sufixos). Normalmente, ele pára no primeiro arquivo que existe, a menos que você especifique explicitamente um ou outro. Se essa opção for diferente de zero, ele verifica todos os sufixos e usa o arquivo que for mais recente.
Observe que, se você personalizar isso, obviamente isso não afetará os arquivos carregados antes da leitura de suas personalizações!
auto-compile
instaria as pessoas a usar a biblioteca (excelente!) No Emacs 24.4+, assim como abaixo. É uma verdadeira solução para configurar e esquecer.load-prefer-newer
só garante que você continue executando o código descompilado lento depois que seu código compilado ficar desatualizado.