39 lines
1.4 KiB
Org Mode
39 lines
1.4 KiB
Org Mode
|
#+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.
|