I’m confused by the distinction between Emacs and an IDE. In what way is Emacs not an IDE? It’s more of an integrated environment than any other IDE I have used, IntelliJ included. Hell in Emacs I can read my emails and browse the web.
That’s a sad terminology confusion: when people say IDE today, they often don’t have the original “integrated” meaning. Rather, they mean “that, which understands the exact semantics of the code and provides semantic-driven code assistance”. PostIntelliJ is the canonical post which captures the essence of this new IDE meaning. As I work on IDEs (in the modern sense), I tried to invent a better term here (code understander) but it doesn’t stick even with me. So I resorted to just re-defining IDE as Intelligent Development Environment.
Today, there’s a trend for separating the semantic engine from the editor front-end (LSP), so we might see Emacs as intelligent environment in the future. Qualitatively, I think that Emacs + lsp-mode for a language which has an OK LSP implementation passes as IDE. Quantitatively, today LSP capabilities are inferior to those of IntelliJ.
Totally agree that our development tooling still has a lot of areas to improve, “intelligent bits” as you call it but also better support in terms of debugging, tracing, and insights into a programs runtime. The existing stepping debugger support in emacs & most other tools are just very basic and haven’t really changed on what existed 25, 30 years ago. A “live development” experience such as with the Smalltalk debugger is still missing in most other tooling (except for Common Lisp / Scheme to some degree).
In any case, thank you & the rust-analyzer team in particular that Emacs + rust-analyzer is my favorite Rust development environment that is getting better every week!
I’ve used Vim since the early 2000s. Each tool has a purpose. In Intellij IDEA for example, you can create a kotlin based spring boot project and start debugging or start writinh some test cases and run them to see the coverage. It will underline code where you need to add null checks. It will auto-install dependencies in your pom or gradle files. This is supported out of the box as expected from any IDE. It is a time saver. I install emacs and stare at a blank page. No “create project” menus, no “project options” it just stares with its gray, listless, lifeless terminal screen.
Good point. “Specialized IDE” would have been more accurate but would have been more verbose
I find this article fairly odd. I’ve been using Emacs for coming up on 30 years now, and my feeling is that there has never been a better time to use Emacs for languages that have traditionally needed a specialized IDE. I’ve worked for the last couple of decades in jobs that use blub languages, including Java and C#. My practice has always been to use the IDE for configuring the build environment, creating files, building, and debugging, and Emacs for actual editing.
It was pretty tough in the mid-2000s setting up jdee-mode for Java, but it worked okay once set up. Using omnisharp-emacs for C# for the last 8 years or so has been fine, but I just migrated my Emacs C# setup from omnisharp-emacs to lsp-mode (language server protocol), and Emacs is now amazing for writing C#. Just really satisfying to use, and with Emacs 28 with native elisp compilation, it’s fast, too. I still use Visual Studio for debugging (there’s no dap-mode backend for C# yet), and for managing .sln and .csproj files (we’re still on .NET Framework, not .NET Core), but the Emacs experience for C# is really good now.
ansi-term is OK, but vterm is even better, these days: https://melpa.org/#/vterm
Also, as someone suggested, LSP makes Emacs into a pretty decent IDE. And Spacemacs makes it easier to get to IDE-like state without having to spend a vast amount of time on configuration.
I’ll check out vterm. In what ways is it better?
ansi-term has a lot more rendering issues. If you do screen or tmux inside ansi-term it’s less bad, but vterm suffers from this a lot less.
vterm is also using a C library via FFI for a lot of its work, so it should be faster than ansi-term.
emacs has been slowly infecting my entire workflow for the past 7 years almost. I started with vanilla emacs, failed. Then moved to spacemacs and it was great for a while then the dev branch because where all the features were and it became a stability mess. Now im on doom emacs and life is great. Having an LSP mode for every language i work in, easy enough to integrate a package from MELPA or something and a consistent experience across all my languages/projects has been amazing. Also org keeps me from losing my mind