[plt-scheme] Please share your comments on the pros and cons of mzscheme + EMACS

From: Richard Cobbe (cobbe at ccs.neu.edu)
Date: Thu Jun 7 09:24:36 EDT 2007

On Thu, Jun 07, 2007 at 07:53:08AM -0500, Grant Rettke wrote:

>  It "sounds" like everyone uses EMACS. "They" keep talking about how
>  great it is for LISP, and how much they love it.

I think people say that emacs is a wonderful environment for editing LISP
for primarily two reasons.  First, it has a deep understanding of the
structure of LISP syntax.  This manifests itself largely as keybindings to
manipulate S-expressions, as you mention above.  Ferinstance: control-T
transposes two characters, meta-T transposes two words, control-meta-T
transposes two S-expressions.  (To a first approxmation, 'meta' is
Emacs-speak for 'alt'.)  There are also keybindings for moving forward and
backward by s-expressions, and so forth.

The other big advantage is the support for running a LISP/Scheme REPL
directly inside emacs, along with keybindings to reload the current file or
current definition.  The details differ depending on exactly which LISP or
Scheme mode you use, so I won't go into details.  But it's generally
possible, for example, to edit a function definition in mumble.lisp and hit
a keybinding to load the new function definition into the REPL without
having to cut-n-paste.

>  EMACS looks like it has a bit of a learning curve? Is that true? Do you
>  use it?

Someone associated with the Debian project said it best a few years ago:
"Emacs has a learning curve so steep you could use it for a plumb line."

But back when I was learning Scheme, DrScheme didn't exist yet, so I
learned emacs because it was the only real option.  I got over the learning
curve because I didn't have a choice, and I still use it as my primary
editor.  People who've used Emacs for a long time find that the common
keybindings work their way into muscle memory, with the result that they
tend to get very frustrated when they're using an application that doesn't
support them.


Posted on the users mailing list.