12 ms·
This seems to be a part of a nascent trend in IDEs. There's vrapper and eclim for eclipse, Vintage for Sublime Text, and now this as well. I've seen a lot of a
by johnfn 15y ago
This seems to be a part of a nascent trend in IDEs. There's vrapper and eclim for eclipse, Vintage for Sublime Text, and now this as well.
I've seen a lot of arguments about how people don't use IDEs because vim/emacs are better, and I always felt they were misguided. I see the feature sets of vim/emacs and your common IDE as nearly disjoint sets, and I couldn't be happier to see the good parts of the two editors being joined with the power of the IDE.
- mmavnn 15y agoThat's largely my thought. I love Vim, and it's occasionally frustrating when VsVim doesn't cover a corner case; but the functionality of VS with ReSharper means that for .net code I'll put up with it.
- sho_hn 15y agoKDE's Kate editor, and by extension its KDevelop IDE (as it embeds Kate's editor tech), also have fairly capable vim modes.
- dkarl 15y agoIDEs 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.
- greyfade 15y agoI'm still having trouble seeing the value of an IDE. When programming, all I'm doing is editing text and occasionally running an external program. what does an IDE have that makes it so valuable? (Honest question! I've used IDEs in the past - MSVC, Eclipse, NetBeans, Anjuta, Code::Blocks, and several others - and found that the generally poor editors made it more difficult to program.)
- BHSPitMonkey 15y agoFor one, they provide a way to stay immersed in all aspects of your project continually while switching around between tasks (seeing your files/class tree + code + warnings/errors + status simultaneously on one screen). Even if you're savvy enough to achieve some of this through a careful terminal splitting/tiling setup, you're just halfway-implementing a graphical interface. Like most GUIs, you're also provided with organized menu-based access to tools and features you might otherwise have to spend time remembering or learning how to do from a terminal. Finally, IDE-centric features like in-editor static analysis / error highlighting can come in handy from time to time (Oops! Forgot a paren. Glad I didn't have to waste 15 seconds attempting to build, reading/understanding the error output, and coming back to this file/line). (I agree that a lot of IDEs I've tried such as MSVC and Eclipse can be burdensome to use. I like using Geany, since it's foremost an editor, with useful panes and functionality added in.)
- tikhonj 15y agoEmacs also lets you stay immersed in all aspects of your project at once. However, unlike a GUI, using different panes in Emacs is uniform: the commands you use to get around the file/tree view are the same commands you use to get around your code are the same commands you use to get around your compiler output. Emacs also provides some really nice technology for finding commands including ido-mode and C-h m (which lists commands for the current mode and is incredibly useful). However, here the real magic is that getting around a help buffer is again the same as navigating code--you can use the same command to search and the same commands to move around. Emacs also has a nice system for integrating arbitrary output from an external process into your code, letting you have error highlighting and static analysis for arbitrary languages. On top of this, it has several really nice modes like js-2 and SLIME that create an even more compelling experience for certain languages. On top of this, Emacs has a bunch of really nice features like TRAMP which lets you visit arbitrary remote files and even open remote shells trivially. On top of this, it is much easier to extend than any IDE or even any other editor I have ever seen. So really, Emacs can provide everything you want, it can provide it in a much more consistent UI and it is infinitely configurable.
- SkyMarshal 15y agoEven better, there are vim keybinding plugins for just about everything - Chrome, Chromium, Firefox, Opera (if it's updated now, not sure). Even Emacs (vimpulse). Combined with IDE plugins like eclim you can set up a single unified key interface to almost everything you do on a computer.
- campnic 15y agoWow, vrapper is what I've always wanted. Thanks for posting this. Its always amazing to me when some part of someones comment really changes my daily development. This is one of those times!