The vim documentation
https://github.com/platformio/platformio-docs/blob/develop/integration/ide/vim.rst
suggests generating a .ccls file via pio init. For me, this wasn't working, as I was getting "declaration not found" (using e.g. :LspPeekDeclaration) only. What did help for me was running pio run -t compiledb.
I'm not sure why, running ccls --index=. with the pio-ide-vim approach suggests only my own files are indexed, not the library ones.
With the compiledb approach (and deleting .ccls), libraries are indexed as well.
Should the documentation be updated?