Live data from Hacker News

VsVim

visualstudiogallery.msdn.microsoft.com

51–54 of 54 posts

Re: VsVim

#51
post #30
post #19

Earlier quoted context omitted.

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 co…

I 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, Jav…

The 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.

Re: VsVim

#52
post #4

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 bei…

I'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.)

* Auto-complete (that actually works based on the syntax tree of your entire project, not just text matching)

* Refactoring tools that can not be done by an editor that does not also understand the language. (like block select -> "Extract Method" or "Implement Interface")

* "Go to definition", which can take you to the definition of a method, property or field, that always works, even with the most convoluted syntax.

* Debugger and breakpoints integrated into the environment

* Expression-level type inference, or the ability for the IDE to tell you the type of an expression, and examine that types' definition in all cases.

* Basically any manipulation of the files that requires more understanding of the source files than text-based operations.

Re: VsVim

#53
post #51
post #30

Earlier quoted context omitted.

I 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, Jav…

The 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 colo…

Yeah, you could get most (maybe all, I don't use Scala, so I don't know) of those features. I guess we just disagree on whether a somewhat steep one-time cost is worth it.

I also recognize that it is horrible for serious Java development. I found it fine for browsing through random (usually undocumented :p) libraries, but when I had to use Java myself it was horrible. I ended up doing a bunch of things in Eclipse. Ultimately I solved the problem by not using Java :) Not a viable solution for everybody, but I think it beats the alternatives. (Unfortunately, Emacs's support for Java has gotten worse over the years, unless I missed something when trying to set it up in the past.)

My experience with IDEs and screen space has actually been the opposite: Emacs expands to fill all available space while IDEs tend to be much less efficient. I have all the UI frills on Emacs turned off (file bar, menu bar, scroll bars, flanges...), run it full screen on a 1920x1080 monitor and still don't always have enough space for everything I want. Of course, I tend to have one or two files, one or two shells, a dired buffer and maybe even Jabber or IRC open at one time, so it's doing more than an IDE would.

Additionally, in my experience, it's the IDEs that lack the features I want. I am basically addicted to TRAMP: I have maybe 10 remote buffers to three different servers open right now. However, the thing I miss most is elisp: I am able to add features I want really quickly. When I'm missing a nontrivial command (say, open a shell in the current directory, set its prompt and name the buffer) it literally takes minutes for me to add it. Little things like C-u Space (which lets me go to the last place I've marked) and undo-in-region are also extremely awesome.

As far as things like the Speedbar go, I just don't use it: I see no advantage to having something like that, and I basically never use the mouse anyhow. I do use tags, and they are useful--didn't you say you liked jump to definition?

I think the main difference is in languages: I primarily use Haskell, JavaScript and Python with a smattering of lisp, Perl, LaTeX and bash. In the near past I also used Gosu (before the IDE plugins worked, if they do now) and C. Emacs is great for all these languages on top of being both a brilliant editor and great window manager/os (I seem to do everything but browse the internet from Emacs these days).

It really is horrible for Java though. And Java is particularly horrible without an IDE. Still, for quite a lot of other languages, it really is like an IDE. I guess not very many Java hackers use Emacs and not very many Emacs hackers use Java.

Re: VsVim

#54
post #53
post #51

Earlier quoted context omitted.

The 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 colo…

Yeah, you could get most (maybe all, I don't use Scala, so I don't know) of those features. I guess we just disagree on whether a somewhat steep one-time cost is worth it. I also recognize that it is horrible for serious Java development. I found it fine for browsing through random (usually undocumented :p) libraries, but when I had to use Java myself it was horrible. I ended up doing a bunch of things in Eclipse. Ul…

etags didn't help me much with the C++ code I worked on. It took me to the right place a lot of the time, but between the macro-heavy C code I inherited and the modern C++ code I was writing, it wasn't reliable enough for me to put up with.

The same thing was true of all the C++ IDEs I tried, though. No tool in the world except gcc could handle our C++ code. We even had a file that defeated Emacs. It was a huge file that used a logging macro that included a leading parenthesis but no closing parenthesis, so there were hundreds of lines like this:

    LOG "A log message", logFile); 
Result: Emacs locked up when you opened the file, presumably while trying to colorize the syntax.

Whenever language support is that poor, text editors and other Unix text-munging tools win hands-down. All I had to do in Emacs was disable the cc mode hooks and fix up the file using query-replace-regexp. IntelliJ has the equivalent of query-replace-regexp, but it's clunky and bothersome enough that I went from using it as a daily tool in Emacs to almost never using it in IntelliJ. That's pretty much what happened to me with Emacs' IDE features, so it's kind of a symmetrical situation.

Post reply on HN