One of the many reasons I use Emacs is because it gets rid of the “which editor do I use on this OS” problem for me. I’m constantly switching between multiple OSes and having to remember different key-bindings, different functionality, and different user interfaces for different editors/OSes is a major pain. Yes, I prefer using the keyboard to the mouse even on OS X. And Emacs allows me to memorize only one such set.
Now, I can use Aquamacs on OS X, but I don’t really think it fits my brain. GNU Emacs, on the other hand, gives me the same “classic” feeling of using it on, say, a Linux OS. Also, accessing Aquamacs from the terminal to do a batch compile of elisp modules is a pain. It doesn’t use standard Emacs options and breaks builds for various packages.
Therefore, I ended up removing Aquamacs and installed the build from emacsformacosx.com. But its days were numbered as well. Again, symlinking it and using it in the Terminal is easy, but batch-compiling things fails miserably with errors about architecture dependent locations missing and what-not.
So I decided to build Emacs from the source code. I had all the concerned developer tools and libraries installed so I simply fetched Emacs from the git tree and built two versions–one for the GUI and one for the terminal.
$ git clone git://git.savannah.gnu.org/emacs.git
# Update: The repository URL has changed.
$ git clone git://repo.or.cz/emacs.git
$ cd emacs/
GNU Emacs for the GUI
$ ./configure --with-ns # <-- No --prefix=... and $ make bootstrap $ make -j4 $ make install # Yes without sudo. $ sudo cp -r nextstep/Emacs.app /Applications/Emacs.app
GNU Emacs for the Console
$ ./configure --prefix=/usr/local --without-x # with --prefix=... $ make bootstrap $ make -j4 $ sudo make install # With sudo.
If you do not include a
--prefix argument to the
configure script and use the
--with-ns option, you will end up building an application bundle when you type
make install. On the other hand, specifying it without using the
--with-ns option means you want
make install to install it for use with a shell.
Now I have Emacs installed just the way I wanted.