site/posts/eval-and-compile.mdwn

53 lines
2 KiB
Markdown

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 init<sup><a class="footref"
name="fnr.1" href="#fn.1">1</a></sup> 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<sup><a class="footref" name="fnr.1.2" href="#fn.1">1</a></sup>
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 DRY<sup><a
class="footref" name="fnr.2" href="#fn.2">2</a></sup>.
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 init<sup><a class="footref" name="fnr.1.3"
href="#fn.1">1</a></sup> file, just to speed up loading during
compilation a little bit.
<div id="footnotes">
<h3 class="footnotes">Footnotes: </h3>
<div id="text-footnotes">
<p class="footnote"><sup><a class="footnum" name="fn.1" href="#fnr.1">1</a></sup> <a href="http://ryuslash.org/dotfiles/emacs/init.html">http://ryuslash.org/dotfiles/emacs/init.html</a>
</p>
<p class="footnote"><sup><a class="footnum" name="fn.2" href="#fnr.2">2</a></sup> Don't Repeat Yourself
</p>
</div>
</div>
[[!meta date="2012-07-27 21:19:00"]]
[[!tag emacs elisp dotfiles coding]]