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.