VS Code's complexity is due in large part to its extensibility. It has the biggest, most robust extension API of any modern editor. Extensions don't get to run on the main/UI thread but run in a separate process that communicates with the main window over RPCs. This necessitates a lot of plumbing and layered generics but makes the main UI fast/stable and was a key innovation over other editors at the time (cough Atom cough).
The API is so good that a lot of core VS Code behavior (e.g. Github integration, support for lots of languages) is implemented in the form of built-in extensions.
It is possible to get 80% of VS Code's functionality with 10-20% of the code if you just bake everything into one monolith, but this has been tried repeatedly and it keeps failing in part because the extension ecosystem and attendant network effects form a wide moat.
The API is so good that a lot of core VS Code behavior (e.g. Github integration, support for lots of languages) is implemented in the form of built-in extensions.
It is possible to get 80% of VS Code's functionality with 10-20% of the code if you just bake everything into one monolith, but this has been tried repeatedly and it keeps failing in part because the extension ecosystem and attendant network effects form a wide moat.
(disclaimer - I work on Positron)