diff --git a/posts/eval-and-compile.mdwn b/posts/eval-and-compile.mdwn new file mode 100644 index 0000000..6975120 --- /dev/null +++ b/posts/eval-and-compile.mdwn @@ -0,0 +1,53 @@ +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 +
+