Hi Stephen,

> I’ve noticed some list members use other editors or IDE’s.
> 
> I know two big reasons for using a complex tool is it’s stickiness factors;
> normally a combination of familiarity (hence speed) with a lot of powerful
> features and non-transportable customisation.
> 
> Putting stickiness factors aside, what features in other editors/IDE’s
> would you like to see in DrRacket?

I use both Emacs and DrRacket for Racket code, Emacs for basically
everything else.

As you surmise, there are generally-useful Emacs packages and features
that keep me there. In particular:

1. Paredit: The DrRacket Paredit emulation is different enough to make
it much less convenient. In particular, it leaves lots of extra closing
parens floating around.

2. helm-ag: This lets me very quickly search everything in the closest
Git repo, without it having to be a big ceremony.

3. Magit: This is the best interface to Git on the planet, and having it
in the same editor is much more convenient than switching over to Emacs
just to Git.

4. Speed. Emacs is very snappy, while DrRacket sometimes noticably lags
after input.

5. General editing: Emacs has things like keyboard macros and the
ability to write a quick little on-off bit of elisp that make
large-scale editing far more convenient. As far as I can tell, I'd need
to write a DrRacket tool to make this happen, and that involves a lot
more ceremony than a quick defun in *scratch*. And filling is hard to do
without.

6. M-/ for autocomplete of anything open anywhere.

7. It works the same way for everything. I get all the same features
whether I'm working on Racket, Haskell, Idris, LaTeX, Agda, or a
Makefile (that's about in the order of frequency of editing for me).
It's great to have everything that makes sense in one work well in the
other.

8. Commands like motion and isearch work *everywhere*, not just in text
buffers. So there's no need for a separate search mechanism for things
like settings.

racket-mode supports some things that DrRacket doesn't, above and beyond
standard Emacs. In particular,
1. The ability to get a REPL in the context of a particular submodule,
which makes developing things like tests more convenient.

2. I can put custom indentation rules for my macros into a
.dir-locals.el so that they don't pollute a global indentation config.

3. There's a keybinding to cycle through paren shapes for the
surrounding expression, () -> [] -> {} -> (). I use this constantly.

So why use DrRacket?

1. Good support for languages like Scribble. I never got that working to
my liking in Emacs.

2. The macro stepper is extremely handy when it works, and being able to
inspect syntax objects in the interactions pane is wonderful when the
macro stepper doesn't work.

3. It's easier to create close integrations between a #lang and its
interface.  For example, binding arrows, adding tooltips showing types,
and designing interactive editing commands written in Racket. Doing this
in Emacs is not nearly as fun (and I know, I've done it for Idris).

4. Students use it, so they should be supported.

5. Much better control over subprocesses. It's far easier for a runaway
process in Emacs to make the computer very slow, while DrRacket stops it
when it allocates too much.

Hope that was useful. Thanks for your interest in making things even better!

/David

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to