For C++ I found the clangd plugin to be the secret. Just install that and get your build to output a compile_commands.json in your build folder. That is easy to do with cmake but most other setups can do it too. The plugin will find that after a clean build. Then it will magically index your whole project.
I sent them an angry email when I bought my first house. I had purchased a physical copy of a game because I was waiting for my Internet to get turned on. I wasn’t able to play because it required an internet connection to complete the registration. I was so mad. I told them I would never buy another thing from Valve. That turned out to be the lie of the century. I was super wrong and Valve has been a company you can be proud of for decades. I often think about what a jackass I was for sending that email.