3 ms·
With lsp-mode, there’s really nothing I can think of that emacs can’t do compared to IDEs. In fact, emacs blows them out of the water. Before LSP was invented,
by smabie 7y ago
With lsp-mode, there’s really nothing I can think of that emacs can’t do compared to IDEs. In fact, emacs blows them out of the water. Before LSP was invented, I would have agreed with you. But pretty much all IDE features have been commoditized by LSP now.
- iudqnolq 7y agoI only know about the example of Rust, where IntelliJ is still significantly better and faster than lsp.
- aasasd 7y agoThe man-or-boy test for IDEs was proposed long ago by Martin Fowler. If the editor can do the ‘extract method’ refactoring, then it's an IDE that properly understands the structure of the code. More generally and forgivably, I'd say the IDE must know that two variables of the same name may be different variables, and to know which instances are which vars. Funny enough, this benefit of IDEs might rarely be felt with Javascript due to its uber-dynamic nature (at least without classes).
- skocznymroczny 7y agoAre there any languages other than C#, Java and maybe Dart that have these features? As soon as you add any kind of metaprogramming or macros to the mix, IDEs start to break, because they can't refactor code that doesn't exist yet. That's an issue for IDEs for C, C++, Rust, D and probably few other languages.
- aasasd 7y ago> Are there any languages other than C#, Java and maybe Dart that have these features? If you're talking about ‘extract method’, any regular imperative language in the C style should have that―possibly as ‘extract function’. I mean also Python, JS, Ruby and the like. The hard part here is to figure out which vars go into the method/function and which of them must be accepted as parameters or returned from the function―that's where the understanding of code structure comes in. Sure, fiddling with metaprogramming will break IDE's understanding of the code, e.g. in Python, but you can do that carefully and isolate the effects so that the rest of code is still ‘clean’. That's also why Java integrates any and all features into the type and OOP system (afaik), so the code can always be described statically. I guess Haskell is an extreme example of that, but not sure how IDE-friendly it is.
- dmortin 7y agoI use emacs, but I don't think lsp-mode can do all the refactorings which intellij provides: Safe Delete Extract Method Extract Constant Extract Field Extract Parameter Introduce Variable Rename Inline Change signature Refactorings are great, because you can do safe code transformations very quickly. If you get to know these features, it's hard to do without them.