I have decided to check out Emacs, and I liked it very much. Now, I'm using the Emacs Starter Kit, which sort of provides better defaults and some nice customizations to default install of Emacs.
I have customized it a little, added some stuff like yasnippet, color-themes, unbound, and other stuff. I've set up a github repository where I keep all of the customizations so I can access them from multiple places or in case something goes bad and I lose my .emacs.d directory.
All of this is very nice, but there is a problem: Emacs takes about 1-2 seconds to load. AFAIK I can compile individual .el files with M-x byte-compile-file to .elc, and it works. But there are a lot of .el files, and I wonder if there is a way to compile them all with a simple command or something, to speed up the loading of Emacs. My Emacs is not always open, and I open and close it quite frequently, especially after I've set it up as a default editor for edit command in Total Commander to get used to it faster (yeah, windows xp here).
My Emacs version is 22.3. And yes, the default Emacs installation without any customizations fires up instantly.
I am not sure which version is preferred when loading, the .el or compiled .elc one by the way O.o
So, is there an elisp command or Emacs command line switch to make Emacs byte-compile everything in .emacs.d directory?
This is swaying a bit from the question, but to solve the problem of loading slowly you can use the new daemon feature in Emacs 23.
From http://emacs-fu.blogspot.com/2009/07/emacs-23-is-very-near.html
To automatically byte compile everything that needs byte compiling each time I start emacs, I put the following after my changes to
load-path
at the top of my.emacs
file:Surprisingly, it doesn't add much to my startup time (unless something needs to be compiled).
To speed up my emacs, I first identified the slow parts using profile-dotemacs.el and then replaced them with autoloads.
You can use the
--batch
flag to recompile from the command line.To recompile all, do
or to recompile a single file as from a Makefile,
For my using spacemacs, the command is
spacemacs/recompile-elpa
. The commandbyte-recompile-directory
does not compile any file.C-u 0 M-x byte-recompile-directory
will compile all the .el files in the directory and in all subdirectories below.
The
C-u 0
part is to make it not ask about every .el file that does not have a .elc counterpart.