About IDE and code editors - zoo of different vs "silver bullet"

Good day!
Recently I read in news @michalis change Emacs to VSCode.
For now I use for Pascal Lazarus with minimalist settings and like it enough. But sometimes I need code editor for Linux for another tasks. Sometimes I think about learn Emacs as universal combine for any language and text data, but I lazy to do it :face_with_bags_under_eyes:
So, my question is: why you migrate from Emacs? And what another alternatives to VSCode (I look to Microsoft products with little skeptic :upside_down_face: )
Or maybe universal tool = bad tool? And better use different IDE for different languages and aims?

I am a fan of Notepad++ when working with text/code from various coding and human languages. Especially helpful for working with encoded text (utf8, etc) when I did a lot of i18n contract work. You can do things like see CR LF characters. I think you can set it up to code highlight for any code language.


But for coding, I too just use the Lazarus editor.

1 Like

Notepad++ is very useful program for scripting and text, of course. I think it will work under wine without problems, but usually I try to seek native soft for Linux.

Apparently there is a notepadqq for linux that is drop in replacement.

1 Like

As for one ide to serve them all vs different ides… I find that my brain is better at whatever language in its own ide. It sets my brain mode. I am fastest in anything that supports the old wordperfect keyboard commands, like delphi lazarus always have.

There are not much alternatives to VSCode if you wish to utilize AI in coding with Pascal. I personally have vs code with github copilot and also windsurf (which is special fork of vs code with integrated ai tools), there is also Cursor IDE (which is similar to windsurf). Ofc they all support CGE-VSCode plugin.

I indeed switched Emacs → VS Code about 2 years ago, I mentioned this in news on Visual Studio Code and LSP server improvements – Castle Game Engine .

The reasons are… numerous. And not everything is perfect. Both are very rich in functionality.

Before I go into details, disclaimer: text editor choice is a very personal thing :slight_smile: I don’t dare (neither do I want to) to ever persuade anyone to switch to a given text editor. And I don’t believe my own choices (Emacs, then VS Code) are “the optimal ones, in general, for everyone”. We (programmers) spend most of our life in a text editor. My habits of doing so so many things are tied to my text editor. I can switch OSes easier than text editor, this is not a joke – once I’m inside VS Code (or once I’m inside Emacs, 2 years ago) → the differences between e.g. Windows or Linux vanish to certain extent. Try to force me to use a different editor → I will be helpless as a baby :slight_smile:

And my choice are the outcome of my needs and habits.

Some of my reasons for liking “editors like VS Code and Emacs” (below is mostly advantages shared by Emacs and VS Code):

  • I switch between OSes often, mostly because I like Linux but I develop cross-platform software (in particular, Castle Game Engine). I need editor that is good on Windows, Linux, macOS. Also on less common CPUs like Linux/Arm32, Linux/Aarch64 (Raspberry Pi, Pine64). This e.g. means I need a text editor that is 100% cross-platform.

  • I want to “like” the editor, since I spend so much time in it, and I also want to know I will not have to switch again in a few years :slight_smile: So I need open-source editor (both Emacs and VS Code satisfy this; yeah, VS Code is from MS, but luckily the “core” of VS Code is really truly open-source, you can even just get VS Codium which is “VS Code - telemetry * with different marketplace”).

  • I also switch between computers often. Now I have 2 machines where I regularly work at home. I used to have more machines, some at different sites – I like to boot up any machine I ~own and see similar config :slight_smile: So I like synchronizing 100% of my config of editors (hence, I use VS Code account synchronization; with Emacs, I synchronized with config in my elisp repo).

  • I work on servers often (only command-line access, usually SSH). I value remote access (Tramp in Emacs, remote SSH/tunnels in VS Code).

  • I work with various languages. Even within Castle Game Engine, while most things are Pascal, some Android stuff is Java, some iOS stuff is Objective-C. I also like that I can test something in Python, or C, or C++, C#, Dart… and in every of these langauges, I feel “at home”. I have the same environment, same keyboard shortcuts, ~same code completion behavior, I spend years tweaking it to my liking… different language is just different syntax.

    For this reason, for me, both Emacs / VS Code “win” over Lazarus / Delphi thanks to being “language agnostic”.

    In the old days, one problem of Emacs / VS Code was lack of code completion specific to Pascal. This was fixed by the advent of LSP servers (invention of VS Code, only adopted by Emacs! VS Code people did here a very good invention, that really benefits all text editors, including Emacs and Vim IMHO).

    So back when I was using Emacs, I was using Pascal LSP, and I got a great code completion for Pascal in Emacs (and VS Code and Vim – which is just an effect of “LSP” working everywhere). I described this in Visual Studio Code integration, intelligent code completion with our LSP server, also for Emacs, NeoVim and other text editors – Castle Game Engine . And it’s good because it’s just using Lazarus code completion :slight_smile: We share all improvements that Lazarus devs do to the CodeTools. By just recompiling castle-engine/pascal-language-server with latest Lazarus, we get great code completion in all text editors that support LSP (Emacs, VS Code, Vim, …).

  • I cannot imagine doing anything without version control :slight_smile: Almost everything personal on my disk, including my non-programming knowledge base, and all my programming of course, is in some version control. So I enjoy both Emacs and VS Code for 1-st class support for version control like GIT. Emacs has great Magit, that taught me that “stashing chunks” is very useful. VS Code has great integration too. I need editor that supports my workflow:

    • do some work,
    • make sure it compiles + work,
    • look at diff (quick self-review),
    • commit (with useful log message) (the parts that I want, not blindly all changes).

    I need this loop (work + diff + commit) comfortable and contained in my text editor :), to not break context.

I focused above on differences “Emacs, VS Code and other language agnostic editor” vs “Pascal-special editors”.

For a comparison more “Emacs vs VS Code” (so, why did I switch 2 years ago, and am I happy):

  • Since I switched, I enjoy that I no longer maintain a big pile of Lisp code on michaliskambi/elisp. This was a bother, I didn’t want to spend time maintaining the “bigger and bigger Lisp codebase”, but it seemed like I don’t have a choice in Emacs. VS Code shows you can have better defaults, better options, and in the end you don’t need to have Lisp logic to fine-tune your editor.

  • There are some super-useful plugins in VS Code.

    • GitHub Pull Requets - makes reviewing PRs much easier than any other workflow. You can both modify PR, and comment on PR, comfortably. In contrast, in other text editors you can modify the PR, but not comment. In GitHub on www, you can comment, but not modify (comfortably).

    • GitHub Copilot - to be clear, this by itself would not make VS Code > Emacs. But I’m happy I got Copilot access thanks to the switch.

      Using AI in a smart way deserves another post (you can find my posts on forum and Discord both criticizing the usage of AI in some places, and recommending the use of AI in others…), but in short: AI suggestions can be utterly dumb (and you should not spend even a second wondering about them, if they are obviously dumb), but they can also be useful. Overall, it’s a benefit for me. E.g. it offers nice code completion in cases when “deterministic code completion” (like Lazarus CodeTools) no longer can (e.g. because I work with very “work in progress” code during refactor).

    • All the remote stuff. SSH, tunnels, Docker.. VS Code has lots of it. Emacs Tramp is not as comfortable, fast, reliable. For me.

  • Not all is perfect. E.g. version control in VS Code is great, but I still miss Magit’s comfortable “stash chunks”. I can do it in VS Code, but it was more obvious in Magit.

Thanks for reading :slight_smile: This was a long post, and to repeat the “disclaimer” I started with: you should disregard this post, because it’s all very “personal, works for me”. Because lots of these differences are “nuances”, they make a little more or less sense depending on your needs. E.g. if you mostly work with one language (like Pascal) and you stick to one system (like mostly Linux or mostly Windows), then you may correctly consider (and find better) options that I rejected.

JetBrains and Vim are also widely supported by AI tools, it seems. Copilot supports a few (VS Code, Eclipse, JetBrains, Neovim, Xcode). I’m playing with Augment now which also supports a few editors.

But yeah, “VS Code” is a common thing in all of them.

It wins in popularity: 2024 StackOverflow survey, “Visual Studio Code is the most-desired (and used) IDE tool (59%)…”. I guess, whatever someone is doing in 2025, if it’s about “integration with a text editor”, they will for sure make it integrated with VS Code because it’s the most popular. In this sense, using “mainstream” (that is, using VS Code) → we benefit from the “others adjust to mainstream” mechanics. ( Still I think VS Code popularity is deserved. It’s nice to have the “mainstream benefits” as a bonus of using it :slight_smile: )

1 Like