Hacker News new | past | comments | ask | show | jobs | submit login

A lot of my friends used emacs back at Sun. Modern IDEs really improved since then and I haven't seen a feature that emacs can do that they can't.

Yes a JetBrains IDEs will take longer to build the AST model in RAM but once you have it they do amazing things with it. E.g semantic search and replace, etc. The debugger capabilities are spectacular, they literally show the values of variables on the side of the line you stepped over. Another cool thing, inferred types just show next to the variable definition, parameter names appear in the method call, etc. These are small things that add up to a lot on the day to day.

About projects. JetBrains do create project files but don't require a project structure in newer versions of their IDEs.

The problem is that IDEs are very simple to pick up and people stop after that basic usage. They have depth that exceeds emacs in some respects.




> Modern IDEs really improved since then and I haven't seen a feature that emacs can do that they can't.

Easy extensibility. Read email. Run a calculator. Run Lisp …

Meanwhile, there is literally no feature any IDE has which Emacs cannot do. It's just a simple matter of programming.


Everything is "just programming" but deep semantic heuristics from an IDE can't be done reasonably in Emacs. Most of the big features require keeping a full AST model of the project in RAM. That would make emacs/vi really slow.

IDEs are 100% extensible via plugins. Wrote a few of those myself.


> Most of the big features require keeping a full AST model of the project in RAM. That would make emacs/vi really slow.

That's what LSP does, and emacs supports LSP. Heck, it even has two packages implementing support for LSP.

For that matter, I don't see any reason why Emacs would be any worse at keeping a full AST in RAM that is an IDE. Emacs Lisp is not the most efficient runtime out there, but it's acceptable.

> IDEs are 100% extensible via plugins.

Plugins are not 100% extensibility: they only enable one to extend the IDE in the ways the plugin system was designed to allow. Emacs, OTOH, enables one to extend or replace all editor functionality implemented in Lisp. I am not aware of any other IDE which offers, for example, all of the following: multiple email clients, a net news client, an IRC client, a Slack client, multiple web browsers, a Git UI, a spreadsheet, a personal organiser, multiple calendaring systems, a computer algebra system, multiple file managers, multiple shells and terminal emulators, an RSS client, a music player and Tetris.


I haven't written LSP so I'll reserve the opinion at that. What I understood about emacs is that it doesn't have a concept of a project so I don't see how it can form dependencies that are more sophisticated. But maybe I don't understand something about that.

I can totally write these sort of plugins for any IDE I worked with. Notice that all of these capabilities are symbols of a bygone time where you stuck everything into an editor. There's no motivation for a plugin developer to do these sort of things. Instead we have plugins like Lightrun, TabNine/Copilot, etc. Stuff that's actually useful for development.

JetBrains (and some other IDEs) have a builtin file manager, terminal, etc. These make some sense for development.


> What I understood about emacs is that it doesn't have a concept of a project

Not built-in, but there are packages available for that.


A wise man once told me, if you can't find a package that does most of what you want in emacs, you're using the wrong search terms.


I think project.el is builtin


Extensibility via plugins is quite a bit different from extending the editor as you use it. Emacs admits the latter, and useful functionality can be added in a page or less of Emacs Lisp.

I tried writing a plugin for Visual Studio Code. It made me want to throw furniture.


That is true. IDE plugins are a nightmare to write and VSCode is by far the worst to write. Still, JetBrains is remarkably extensible and mature, I was able to integrate things very deeply in the editor. The downside is writing in Swing which is pretty long in the tooth by now.


> Yes a JetBrains IDEs will take longer to build the AST model in RAM but once you have it they do amazing things with it. E.g semantic search and replace, etc. The debugger capabilities are spectacular, they literally show the values of variables on the side of the line you stepped over. Another cool thing, inferred types just show next to the variable definition, parameter names appear in the method call, etc. These are small things that add up to a lot on the day to day.

Emacs has all of the things mentioned, either through plugins (LSP, Tree sitter, DAP) or built in (tags, GUD). Especially LSP-mode has over the last few years made sure you can integrate your favorite text editor into pretty much any language, for certain languages/technologies it still makes sense to pull up the specialized tools for e.g. debugging, deploying, building, publishing etc, but you can do a lot with the more general tools too.


Curious, does it have some of the more advanced capabilities discussed here: https://www.youtube.com/playlist?list=PLVuaPU1nEcV_bslGd23_4...

Are things highlighted directly in the editor as you step over the lines.


Things are highlighted as you go through, the buffers showing various values in scope is updated all the time, you can add certain variables/objects to be watched. GUD (built in) supports pretty much anything GDB can do (and also supports JDB afaik and a some others), check the manual for full feature set https://www.gnu.org/software/emacs/manual/html_node/emacs/De.... DAP (plugin/extension) is a bit more flashy and "modern", I haven't used it too much though, but it looks interesting https://emacs-lsp.github.io/dap-mode/page/features/. A nice video showcasing some of it can be seen here: https://www.youtube.com/watch?v=0bilcQVSlbM.


For Java Emacs is terrible. I loved IntelliJ. But for Python, Haskell, Common Lisp, Clojure, OCaml, I turn back to Emacs, because it is very familiar, and very nicely integrated.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: