I'm reading up a little on byte-compilation in [GNU Emacs](http://www.gnu.org/software/emacs/) and I read about just exactly a feature that I needed. A while ago, I was working on my init1 file, adding some `auto-complete` code since I wanted to try it again. I noticed that, because `auto-complete` is installed through `package`, it couldn't load the appropriate files at compile time. I know that `package-initialize` should be called before calling or using any `package`-installed functions and I have it in my init1 file, but this doesn't help at compile time. So, ugly as I thought it was, I added [[!format el """ (eval-when-compile (package-initialize)) """]] just above the call to the `auto-complete` functions. I hated having to do that, I know it's just one line, but its not at all DRY2. Just now, though, I read about `eval-and-compile`, and according to the documentation in the elisp reference manual, it should do exactly what I want, eval both when running and when compiling. [[!format el """ (eval-and-compile (package-initialize)) """]] I'm currently trying it out, I just tested it once and it seems to work like a charm. *Of course*, this might never have been an issue if I didn't use `emacs -Q` to compile my init1 file, just to speed up loading during compilation a little bit.
1 http://ryuslash.org/dotfiles/emacs/init.html
2 Don't Repeat Yourself