I'm most interested to hear your thoughts on keybinding (and which Emacs distribution you use). I like the thought of keeping Mac shortcuts consistent a-la Aquamacs (having CMD-Q still bound to exit, etc), but it seems like the Option key is too poorly-placed to be a useful Meta key.
(I've bound Caps-lock to Ctrl.) It seems like binding CMD->Meta and CTRL as Control would provide the best placement ergonomically, but obviously you then lose the standard Mac keybindings when in Emacs.
What does your Emacs setup look like?
I use a 25" widescreen LCD, and I like to jack up the font size until I get about 200 characters across; this lets me hold two 100x47 buffers side by side, which is how I prefer to work. Most of my interaction with the computer (besides web) goes through Emacs -- eshell, gnus, bbdb, calendar/diary, planner, etc.
I also use Emacs in Windows and Unix at work, but I imagine it is sitting in front of my Mac that triggers the cmd key bindings in my head. Maybe it's just that, with Aquamacs, whatever key binding first pops into my head will probably work, so I don't have to worry about context switching so much.
I also agree that Option is the right key to use for Meta. I don't think I would ever get used to pressing cmd and not having it activate the Mac key bindings. Probably because I have been using Macs in some capacity since 1987.
The other "Mac-like" thing about Aquamacs is how it pre-bundles so many of the useful modes. Going out and loading each mode you want one at a time and tweaking it just so seems so Linux to me. I like how Aquamacs tries to give you something that Just Works for most of what you want it to do, instead of something more bare bones that you are expected to configure out the wazoo. I discovered both SBCL and Aquamacs when I wanted to learn Common Lisp, and Aquamacs coming with SLIME pre-installed made one less thing I had to fuss with.
Customizations: Capslock == Ctrl, Emacs menubar is hidden, one .emacs entry for ye olde 'newline-and-indent. That's it.
My only complaint is the startup time for me seems very slow - perhaps I should just have it running after startup ? (I then use spotlight/quicksliver to quickly open up a file in it).
http://bc.tech.coop/blog/081205.html
They are skewed to Clojure development, but you may be able to pick out a few tips.
I agree that the option key is no good as Meta - Cmd is Meta in my setup.
I absolutely override the Mac keybindings. I like having M-Q as fill-paragraph, and I found that other useful commands were being hijacked by useless OS X Text Services (like M-> for end of buffer got stolen by OmniOutliner)
I have a large 1920x1200 display that I tend to use with one emacs frame maximized, and some arrangement of windows inside that frame - most often I have a full height window on the left, and two half-height windows on the right. Sometimes I use three columns of windows, and other times four equal-sized windows makes sense.
One of those windows is almost always running zsh inside ansi-term (M-x ansi-term). Some prefer shell-mode, but I think ansi-term and zsh are more useful. I don't think shell-mode and zsh cooperate too well.
Most of my work is done in python, and I just started using pymacs and ropemacs, which seem useful. Notes on them are here: http://www.enigmacurry.com/2008/05/09/emacs-as-a-powerful-py...
http://bc.tech.coop/blog/041024.html
http://bc.tech.coop/blog/041029.html
I bind Option to Meta in Terminal.app and that works very well.
Also instead of using cmd-c and cmd-v Mac key bindings, I do M-| (shell-command-on-region) to 'pbcopy' to copy the region to the OSX clipboard. It's a godsend.
+ Emacs Starter Kit: http://github.com/technomancy/emacs-starter-kit/tree/master
+ yasnippet: http://code.google.com/p/yasnippet/
+ paredit: http://www.emacswiki.org/emacs/ParEdit
+ Clojure mode: http://en.wikibooks.org/wiki/Clojure_Programming/Getting_Sta...
+ Re-mapped Ctrl to Caps. Carbon Emacs defaults Meta to the Command key, which I kept.
(Except the theme I'm using has very light colored comments, and I can't see them in 8 color terminal. Anyone have a suggestion for a 256 color terminal app?)
I don't use Mac copy-paste, etc, even though I was a Mac user long before I was an Emacs user. Using C-y and M-y reminds me of the kill ring everytime, where using C-v wouldn't. I do have the clipboard synced to the top of the kill ring though...not sure if that was a default.
I use Command as Meta, and have Caps Lock for Control system-wide.
We had this discussion just recently: http://news.ycombinator.com/item?id=443769
BTW, why do you pull from git://repo.or.cz/emacs.git
It's mostly stuff borrowed from other people, but it gives you a good starting point with Ruby/Rails support, Twitter integration, snippets, etc. I use it at home and work (Mac and Windows respectively), and it works well for me.
I use the standard emacs keybindings, rather than the more os-specific ones, since that way it's the same regardless of which platform I use. I use Linux, Windows, and OS X on a regular basis, so keeping things uniform works best for me.
On Windows I use Emacs Win32 of course, and on OS X I use Cocoa Emacs rather than Aquamacs. I played with Aquamacs briefly but it's focus on making Emacs an OS X app doesn't really mesh well with my needs.
Emacs shortcuts will soon be wired into your fingertips and you will be efficient on any platform - windows, linux and mac. In fact, you will very soon forget about the platform and focus on your work at hand.
That's the reason old hands prefer to stick with traditional emacs keyboard interface. Dumping some Mac idiosyncrasies is a small price to pay for the freedom and power.
Scroll down to section 'Build from source' - note the comment to build from the 'nextstep' directory. I just followed the instructions in 'nextstep/INSTALL')
This is working for me, so far... a good way to get a 'vanilla' install.
My config is here: http://github.com/wfarr/dotfiles/
In addition to giving me all the power of emacs editing, getting the text inside emacs means I can more easily use templates, save stuff off in text files etc.
You need to start an emacs server in your .emacs: (server-start). I also (add-hook 'text-mode-hook 'flyspell-mode) so that I get spell correction. With my setup I just control-e in any text area and it pops open a new buffer in my emacs session.
Cocoa Emacs /does/ have Mac shortcuts on by default. Not sure if they're all there, but save, cut, copy, and paste are certainly bound to the proper OS X shortcut.
As for Aquamacs, I tried it first, but had major issues trying to get it to accept my .emacs. It tries to save a ton of crap to custom-set-variables, including things I set via setq to keep my .emacs file logically laid out. It also tried to save my entire color-theme to custom-set-faces, which is an idiotic thing to do; the color-theme takes up 1111 lines in a nice elisp file off on it's own - why try to stuff it in custom-set-faces?
Anyways, just a warning - you may have issues if you try to give Aquamacs a largish .emacs file you've built up over the years on other systems. But that's probably not a problem for you since you're coming from TextMate.
I use the same .emacs at work (WinXP) as I do at home on my Mac and Linux machines, and Cocoa Emacs played well with it with minute adjustments, so I went with it.
I've tried Cocoa Emacs from CVS, but it has one major problem that makes it unusable for me: no fullscreen support. The latest version of Aquamacs does this perfectly. I have an entire space dedicated to Aquamacs, and I send files to it from Terminal with emacsclient.
I too have capslock bound to control. I don't have any other keyboard modifications. I'm used to option/alt working the same in Emacs and every other OS X application (try alt+left/right/backspace/delete in an input box).
My ~/.emacs doesn't have a lot of OS X-specific settings. My favorite thing about my setup right now is having Pyflakes automatically highlight errors in my Python code as I write it. Flyspell in strings and comments is also great.
If you're interested, my ~/.emacs is here: [link redacted]
http://github.com/jimweirich/emacs-setup/tree/master
Also, a starter emacs kit for rubyists:
I like Aquamacs OK with option->meta and caps lock -> control like you have. With that setup, it's a bit of a twist to get my pinky finger onto meta, but it's tolerable on my Microsoft Natural keyboard.
The biggest nuisance is that I can't figure out how to bind function keys. I liked having F2 = goto-line (rather M-g g) and F3 = compile.
After 20 years of Emacs, I've actually started to like Cmd-c and Cmd-v rather than C-k and C-y.
Also, the scroll wheel on the Mighty Mouse works pretty well in Aquamacs. Though you do have to clean the scroll wheel (by rolling it around on your pants) every few days.
First thing I did was swap to option = alt, command = meta.
Next was load up CEDET, and enable all the excessive display helpers. I'll eventually pear them down, but for now it's nice. Specifically, the header bar shows the current function/method body I'm in, and there's an overline over every signature.
Really nice to parse through large source files, especially when they're full of long definitions. Hey, no judging.
The only problems I have is a bug where if you resize your window at least once, it will cause annoying flashes during redraw (but I almost never resize my emacs window, so that's not an issue) and that I would like more integration with the OS.
On the latter front, I already started calling NS services from Emacs (ns-service-Things-add-item-as-Note). This is very cool. What I'd like is more of an ability to customize what Emacs does when it is called to open a file.
I remap Caps Lock to Ctrl.
I keep my .emacs and a tree of elisp files (things like ecb, magit, slime, etc.) in my git repository, which I update and sync across the machines I use: this gives me a great deal of consistency across platforms.
One alteration I make on all platforms is to remap the caps lock key as a second control key: caps lock is useless, and the number of times you have to reach for control in Emacs makes it worthwhile making it easy.
My config is at http://www.github.com/marten/emacs.d/ It contains a couple of useful fixes (such as Cocoa apps not getting the PATH var from the shell). It's got plenty comments. I should try turning more stuff into autoloads, I'm finding it on the slow side to start up right now.
Now a brief question of my own: is there any way to map command to meta in the apple terminal???
I know about mapping option to meta, but it just ain't the same, especially when I hit command-W hoping to copy text and accidentally close my whole frickin' terminal.
While it's not really emacs, I generally do most of my development in Eclipse- but I change the keybindings to Emacs mode (window\preferences\general\keys). Makes eclipse almost nice to use.
My preference when I am not using Emacs is to make a clean break so my finger macros don't run wild, often unintentionally pressing key bindings that do other things than I expect.
All my init files are check in to a repository at https://github.com/jimm/elisp/tree
See http://www.io.com/~jimm/emacs_tips.html#my-dot-emacs for how I've set up the repository for different machines.
If you use the Caps Lock key as CTRL, then it feels pretty awkward for me to type some key combinations (like ctrl-x or ctrl-c) and still keep my fingers on the "home row".
Do you just get used to this? Do you type ctrl-x with your pinky and ring finger? Or, do you shift your hand away from the home row and type ctrl-x with your pinky and middle finger?
This keyboard and setup is exactly the setup I have for Gnu Emacs on Solaris 8 that I have to use every day at work, and if I ever do serious work on Windows, I'll be able to remap Alt and Caps without trouble. The consistency of key placement is definitely helpful.
Config: http://github.com/bretthoerner/emacs-dotfiles/tree/master
I maintain a very OS X-y feel, among other things.
http://github.com/ki/my-dot-emacs/blob/master/dot-emacs.txt
It looked quite good to me.
I have the option key (windows key on this keyboard) mapped to Hyper. I use Hyper to navigate around emacs. H-(n|p|b|f) move up, down, left, or right one window in a frame
H-(N|P|B|F) change the size of the current window height/width
other hyper bindings open apps that I use regularly (shell, anything, sql)
http://subtlegradient.com/articles/2005/12/27/gus-mueller-fl...
http://www.hcs.harvard.edu/~jrus/Site/Cocoa%20Text%20System....
Caps-lock == Ctrl
plist hacked so the whole system (at least cocoa-apps) behave emacs-like (Apple is meta)
carbon emacs (not the one running under the CLI, the .app), because:
(fullscreen, extensions work, like to have the default GNU set-up as a starting point, and there was 1 thing Cocoa Emacs did not right but I forgot what it was)
I use color themes a lot, I plan to have each major mode auto-choosing one; most of my .emacs pets are not implemented yet, in a way the real work tends to be more fascinating
org-mode as "productivity app" and backbone for DTP