IMHO LSP is to VSCode what CEDET Semantic is to Emacs. Only CEDET is a tad better and it predates LSP by almost two decades.
LSP offloads all language related editing to a language specific external
service. This overlooks the fact that programming languages are more
similar in their structure than there are differences. CEDET seems to have
beautifully captured this idea. For a demo, I've been able to use the
refactoring logic to extract method that I'd written for Java to refactor
For further discussion on the subject, you might want to go through this thread https://sourceforge.net/p/cedet/mailman/cedet-semantic/?viewmonth=201911