[clangd] Store index in '.cache/clangd/index' instead of '.clangd/index'
authorSam McCall <sam.mccall@gmail.com>
Thu, 2 Jul 2020 21:51:26 +0000 (23:51 +0200)
committerSam McCall <sam.mccall@gmail.com>
Tue, 7 Jul 2020 12:53:45 +0000 (14:53 +0200)
commit9b55bc4d1197aedd76b0f4e04270265cb74cd0b8
tree1fe4e3894f36deaf52f8e550261fa83d0bf9cf31
parentcca4ac523e183b33be3d4c7da68d45b697a081bd
[clangd] Store index in '.cache/clangd/index' instead of '.clangd/index'

Summary:
.clangd/index was well-intentioned in 2754942cbaef, but `.clangd` is the best
filename for the clangd config file (matching .clang-format and .clang-tidy).
And of course we can't have both .clangd/index and .clangd...

There are a few overlapping goals to satisfy:
 - it should be clear from the directory name that this is transient
   data that is safe to delete at the cost of recomputation, i.e. a cache
 - it should be easy and self-documenting to blacklist these files in .gitignore
 - we should have some consistency between filenames in-tree and
   corresponding files in user storage (e.g. under XDG's ~/.cache/)
 - we should be consistent across platforms (including windows, which
   doesn't have distinct cache vs config directories)

So the plan is:
  $PROJECT/.clangd                    (project config)
  $PROJECT/.cache/clangd/index/       (project index)
  $PROJECT/.cache/clangd/modules/     (maybe in future)
  $XDG_CONFIG_HOME/clangd/config.yaml (user config)
  $XDG_CACHE_HOME/clangd/index/       (index of non-project files)
  $XDG_CACHE_HOME/clangd/modules/     (maybe in future)
This is sensible if XDG_{CONFIG,CACHE}_HOME coincide, and has a simple
.gitignore rule going forward: `.cache/`.

The monorepo gitignore is updated to reflect the backwards-compatible practice:
  ignore .clangd/ (with trailing slash) matching index files from clangd 9/10
  ignore .cache matching index from clangd 11+, and potentially other tools.
The entries from llvm-project/llvm gitignore are removed (obsolete).

Reviewers: kadircet, hokein

Subscribers: ilya-biryukov, MaskRay, jkorous, omtcyfz, arphaman, usaxena95, cfe-commits, llvm-commits

Tags: #clang, #llvm

Differential Revision: https://reviews.llvm.org/D83099
.gitignore
clang-tools-extra/clangd/index/Background.h
clang-tools-extra/clangd/index/BackgroundIndexStorage.cpp
clang-tools-extra/clangd/test/background-index.test
llvm/.gitignore