#+TITLE: eval-and-compile I'm reading up a little on byte-compilation in [[emacs][GNU Emacs]] and I read about just exactly a feature that I needed. A while ago, I was working on my init[fn:init:[[http://ryuslash.org/dotfiles/emacs/init.html]]] 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 init[fn:init] file, but this doesn't help at compile time. So, ugly as I thought it was, I added #+begin_src emacs-lisp (eval-when-compile (package-initialize)) #+end_src 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 DRY[fn::Don't Repeat Yourself]. 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. #+begin_src emacs-lisp (eval-and-compile (package-initialize)) #+end_src 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 init[fn:init] file, just to speed up loading during compilation a little bit.