From ceb6fdaf4c58811e8b55d7dceda6e04299f98429 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Fri, 27 Jul 2012 21:43:19 +0200 Subject: [PATCH] Add "eval-and-compile" post --- blog/blog-2012-07-27-2119.org | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 blog/blog-2012-07-27-2119.org diff --git a/blog/blog-2012-07-27-2119.org b/blog/blog-2012-07-27-2119.org new file mode 100644 index 0000000..d30e1c7 --- /dev/null +++ b/blog/blog-2012-07-27-2119.org @@ -0,0 +1,38 @@ +#+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.