From 40c78e93c95543042f8ff8d8fd0337f8403bebd5 Mon Sep 17 00:00:00 2001 From: Tom Willemsen Date: Tue, 6 Nov 2012 00:52:00 +0100 Subject: [PATCH] Add "eval-and-compile" archive post --- posts/eval-and-compile.mdwn | 53 +++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 posts/eval-and-compile.mdwn 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. + +
+

Footnotes:

+
+

1 http://ryuslash.org/dotfiles/emacs/init.html +

+

2 Don't Repeat Yourself +

+
+
+ +[[!meta date="2012-07-27 21:19:00"]] +[[!tag emacs elisp dotfiles coding]]