Bill Clementson's Blog

Bits and pieces (mostly Lisp-related) that I collect from the ether.

June 2006
Sun Mon Tue Wed Thu Fri Sat
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
May  Jul

Mac OS X for Emacs Users

Tuesday, June 20, 2006

A common definition of "productivity" is "The rate at which goods or services are produced". For programmers, this usually comes down to "lines of code" (LoC); however, there are also those who feel that LoC is not a good (or fair) measure of productivity since this can vary greatly depending on the problem domain, the programming language used, and a variety of other factors. There have been a number of recent posts (see here and here) about how LoC productivity can vary so much. Now, some of this is due to the individual (some hackers are just much better than others); however, some contributors to productivity are either environmental or learned. So, how does one increase productivity? This is a really huge topic and I don't plan to attempt to address it in any depth, so, in this post, I'm going to focus on just one small area: what I've done to optimize my own Mac OS X development environment.

First off, let me say that my name is Bill Clementson and I'm an Emacs addict. ;-) There, I've said it. For the rest of you Emacs addicts (uhm, I mean, users) out there, I've written a number of other posts that describe how you can survive being an Emacs addict (see here, here, here, here, here, here) as well as how you can optimize your physical environment for Emacs use. The rest of this post describes how I've been able to exploit this addiction to improve my productivity on Mac OS X. VI users or non-Mac users will probably want to stop reading at this point (although there might be some useful information for non-Emacs Mac OS X users too). Others have written about how to improve your productivity generically within Emacs as well as specific tips for when you're writing Lisp code in Emacs. I won't touch on those topics in this post. Instead, what I'll be discussing is how I've attempted to optimize my Mac OS X environment for keyboard usage in general and Emacs-style keyboard usage in particular.

Let me begin with a primary premise:

Anything that makes me move my hands from the keyboard reduces my productivity as a programmer.
And a secondary premise:
Being able to use standard Emacs key bindings improves my productivity as a programmer.
Notice that both of these premises were qualified with "as a programmer". I don't have any objection to using a mouse (or alternative pointing device) when I'm not developing code; however, when I am developing code, I want to keep my hands on my keyboard all of the time. Although writing code (in Emacs) is a core activity for me, I use other programs as well during the development process (sending emails to other developers, searching for things both locally and on the Internet, testing programs, etc), so it is important to be able to do everything from the keyboard. The Mac OS X graphical user interface is nice; however, it is not optimized for keyboard usage. Linux users have alternative Window Managers (among others, there are ratpoison, ion, and StumpWM) that they can use if they prefer a keyboard-optimized graphical UI; but, unless you want to run everything under X-Windows, you don't really have that option under OS X. So, here are the things that I've done to optimize my Mac OS X environment for keyboard usage (Note: these changes work for me. They may not work for you or may cause problems - YMMV, caveat emptor and remember to make backups frequently!): If you've got your own tips or techniques, I would love to hear them!

Update-2009-08-17: In order to use the Incremental Search input manager mentioned above in Leopard, one needs to follow the instructions here.

emacs Copyright © 2009 by Bill Clementson