Skip to content
  • Sam McCall's avatar
    [clangd] Store index in '.cache/clangd/index' instead of '.clangd/index' · 9b55bc4d
    Sam McCall authored
    Summary:
    .clangd/index was well-intentioned in 2754942c, 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
    9b55bc4d
Loading