## Emacs 24.3 or below ## There's no built-in way of preventing these old files from being loaded, but there are easy ways to get rid of them. * You can recompile the entire elpa directory by calling: `M-x byte-recompile-directory RET ~/.emacs.d/elpa/`. This should get rid of outdated files. * You can use the [auto-compile](https://github.com/tarsius/auto-compile) package and activate `auto-compile-on-load-mode` which can compile files before they are loaded. ## Emacs 24.4 ## Yes, and it turns out to be rather simple. The `load-prefer-newer` variable serves precisely this purpose. (setq load-prefer-newer t) Unfortunately, it won't work when some code specifically targets the `.elc` file, such as `(load "server.elc")`. But it should be enough as long as you're using `require`s or calling `load` without a suffix, which you should. From the doc: > load-prefer-newer is a variable defined in lread.c. > Its value is nil > > Documentation: > Non-nil means load prefers the newest version of a file. > This applies when a filename suffix is not explicitly specified and > load is trying various possible suffixes (see load-suffixes and > load-file-rep-suffixes). Normally, it stops at the first file > that exists unless you explicitly specify one or the other. If this > option is non-nil, it checks all suffixes and uses whichever file is > newest. > Note that if you customize this, obviously it will not affect files > that are loaded before your customizations are read!