3 ms·
IDEs are terrible text editors. Text editors are terrible IDEs. I can't wait until people figure out how to graft good text editors and good IDEs together. O
by dkarl 15y ago
IDEs are terrible text editors. Text editors are terrible IDEs. I can't wait until people figure out how to graft good text editors and good IDEs together.
One way to do that is to provide IDE functionality as an external service to the text editor. There's a Scala editing package for Emacs called Ensime that uses the Scala presentation compiler, a service that runs in the background. Every time Ensime is asked to colorize code, provide code completion, or jump to the definition of a symbol, it asks the presentation compiler, which gives it the right answers. No half-assed guessing; it actually runs the relevant compiler passes and provides correct information.
Another way to do it might be to embed a real text editor (not just a crappy emulation mode) into an IDE somehow. I think that's what I would prefer. Emulation modes in IDEs will always be playing catch-up, and power users of a Emacs or vim shouldn't have to maintain a mental catalog of which features have been emulated and which haven't. I don't know how it would work, though, and I don't know of anyone working on it.
- sho_hn 15y agoTo follow up on my earlier comment, the KDE platform includes a component model called KParts that, to use modern lingo, is used to perform various "application mashups", including embedding the Kate editor (comparable to TextMate/BBEdit or UltraEdit/Notepad+, including powerful plugin and scripting APIs) into KDevelop while preserving all of its functionality. KParts allow developers to control how the merguing of things like action and shortcut collections, menus, toolbars etc. is done.
- swasheck 15y agoI had a coworker who tried to show me the value of VIM by asking me to program in Word. Interesting approach, but the lesson fell short on me.
- sofal 15y agoYou can already setup Eclipse to be an external service to vim using eclim. I tried that for a while and it works, but then I realized that all the disadvantages of using a heavy IDE (project setup, project switching, startup/shutdown, inconsistent experience across languages and machines) were weighing me down too much.
- tikhonj 15y agoI don't know about other text editors, but Emacs is actually a pretty good IDE for all the languages I use (JavaScript, Haskell, Scheme and a bit of Python). It's not very good for Java, but it is apparently solid for Scala and supports C/C++ fairly well with CEDET, although I haven't tried that. So the external service approach works well (Haskell, Python and Scala) as does a native Emacs approach (lisp, CEDET, JavaScript). Either way though, Emacs can make a killer IDE without giving up its text editing prowess or other assorted magic (TRAMP, shell-mode...etc).
- dkarl 15y agoThe things I miss in Emacs compared to IntelliJ, which I use every day for Scala, are find uses, jump to definition, rename symbol (text search and replace in Emacs is usually almost as good as IntelliJ's refactoring tool, but when you do it a dozen times a day, it adds up,) convenient handling of the SBT window and the run/debug window, and git integration (mostly I like looking at filenames and seeing by their color what their git status is.) Having a great editor isn't worth giving any of those features up. I could probably get all of those features in emacs if I got everything set up correctly, but it's a lot of work. The main difficulty I ran into with Scala was generating an Ensime config. The first time I tried it, it blew up for unknown reasons. A few months later, it didn't work because my SBT project used subprojects. Now there's an SBT plugin that generates the Ensime config, so I'll give it another try someday. I'm very encouraged by Ensime's approach of integrating with and relying on the same tools as the rest of the Scala community (SBT and the presentation compiler.) It gives me hope that it won't be constantly two steps behind like it would be if it tried to reimplement everything from scratch. However, it's definitely a problem for me if Emacs still can't handle Java well. Most of the third-party libraries I use are written in Java, so I do spend time reading and navigating through Java code. I tried setting up JDEE once and almost suffocated in yak hair trying to get basic features to work. (Granted, that was over five years ago, but still, it was much worse than advertised.) And you know, when it comes right down to it, I really want an IDE. The whole thing. IntelliJ and Eclipse seem like bloated monstrosities sometimes, but dammit, so much of that stuff is handy when you're working on a complicated codebase. Plus they really know how to make use of my huge monitor. Using that much space usefully with Emacs and terminals is tough. I had speedbar installed for a while, but speedbar felt like IntelliJ's text editor: a half-hearted imitation of a real feature. Actually, I coded C++ in emacs for seven years and never liked using speedbar, CEDET, or even etags. They all seemed like a lot of hassle, and in every case I found that I preferred to just use Emacs as a text editor. All the Emacs-fu I learned in seven years of C++ development applies just as well to ordinary text as it does to C++ code.
- zem 15y agothe kde vim part was a valiant attempt to do just that. sadly it didn't work out, and its intended replacement, yzis, didn't either. for a good overview at the history of vim integration, check out http://www.freehackers.org/VimIntegration http://www.freehackers.org/VimIntegration the only really good one i've seen is jvi [http://jvi.sourceforge.net/ http://jvi.sourceforge.net/], which is a straight-up port of vim to java as a netbeans plugin. emacs's evil mode [https://gitorious.org/evil/pages/Home https://gitorious.org/evil/pages/Home] is getting there too.