> To be honest, I still haven't really used LSP much, and most of my experience using similar features in other products (Intellisense in Visual Studio, whatever the equivalent broken thing in Xcode is called) is that it really was never that useful
It's useful especially when you're switching many languages, or working with new libraries.
Syntax error is immediately highlighted. Saves a context switch of changing to compiler tab and back to editor.
With every symbol, you can view documentation by hovering. When autocompleting also, a small window/popup shows docs for currently selected symbol.
You have automated refactoring available in-place, especially renaming. In most LSP it renames across all files and modules.
Granted it's not that useful if you're in-and-out familiar with the stack you're working on. But once in a while you still need to switch languages and use new libraries it will be useful.
Yeah, I think that's something that folks tell me all the time as well. I'm pretty consistently in Rust, C++, Python, or Scheme myself. I tend to only keep ~2 of those in my head at a time, but I don't jump around so often in such detail that anything like that would matter. And C++, Rust, and Scheme all have pretty good compiler and linter tooling that prevent me from really needing something extra. C++ may be the exception there (cmake can be a pain depending on your unit test framework) but even then I don't often find myself wanting.
I do think if folks find LSPs useful they should keep using them. I might even be convinced one day! But at the moment I find I'd rather not. Vim's default auto-complete functionality is actually fine enough for me most of the time, so I might actually be weird here.
It's useful especially when you're switching many languages, or working with new libraries.
Syntax error is immediately highlighted. Saves a context switch of changing to compiler tab and back to editor.
With every symbol, you can view documentation by hovering. When autocompleting also, a small window/popup shows docs for currently selected symbol.
You have automated refactoring available in-place, especially renaming. In most LSP it renames across all files and modules.
Granted it's not that useful if you're in-and-out familiar with the stack you're working on. But once in a while you still need to switch languages and use new libraries it will be useful.
I can't go back to pre-LSP world.