# YAMS clangd configuration - Performance optimized # See https://clangd.llvm.org/config for full documentation # Default settings for all files CompileFlags: # Point to the meson build directory CompilationDatabase: build/debug # Remove flags that slow down clangd analysis Remove: # Sanitizers add overhead and aren't needed for IDE features - -fsanitize=* - -fno-sanitize-recover=* # Coverage instrumentation not needed - -fprofile-* - -fcoverage-* # Debug info levels don't affect clangd - -g* # Link-time optimization flags (irrelevant for parsing) - -flto* # Warnings are handled separately by clangd - -Werror # Plugin flags that may not be available - -fplugin=* Index: # Enable background indexing for better go-to-definition Background: Build # Index standard library for better completions StandardLibrary: Yes Diagnostics: # Enable unused include detection UnusedIncludes: Strict # Disable missing includes (can be noisy during development) MissingIncludes: None ClangTidy: # Only run fast checks for better performance FastCheckFilter: Strict # Enable useful checks Add: - bugprone-* - modernize-* - performance-* - readability-identifier-naming # Refactoring assistance: identify complex/duplicate code - readability-function-size - readability-function-cognitive-complexity - readability-redundant-* - misc-redundant-expression # Remove slow or noisy checks Remove: - bugprone-easily-swappable-parameters - modernize-use-trailing-return-type - modernize-avoid-c-arrays CheckOptions: # Flag functions over 100 lines or 20 statements readability-function-size.LineThreshold: 100 readability-function-size.StatementThreshold: 100 # Flag cognitive complexity over 25 readability-function-cognitive-complexity.Threshold: 25 Completion: AllScopes: Yes # Faster argument completion ArgumentLists: Delimiters InlayHints: # Enable helpful hints but limit type name length for performance Enabled: true ParameterNames: true DeducedTypes: true Designators: true BlockEnd: false TypeNameLimit: 32 Hover: ShowAKA: true MacroContentsLimit: 1024 --- # Disable heavy processing for third-party code If: PathMatch: third_party/.* Index: Background: Skip Diagnostics: Suppress: '*' UnusedIncludes: None --- # BUT enable symspell (our own code in third_party) If: PathMatch: third_party/symspell/.* Index: Background: Build Diagnostics: Suppress: [] UnusedIncludes: Strict --- # Skip background indexing for external submodules If: PathMatch: external/.* Index: Background: Skip Diagnostics: Suppress: '*' UnusedIncludes: None --- # Skip build directories If: PathMatch: build.*/.* Index: Background: Skip --- # Skip Conan package cache (if symlinked) If: PathMatch: .*/\.conan2?/.* Index: Background: Skip Diagnostics: Suppress: '*' --- # Test files - enable all diagnostics If: PathMatch: tests/.* Diagnostics: ClangTidy: Add: - cert-* --- # Header files - additional style checks If: PathMatch: include/.*\.h(pp)? Diagnostics: ClangTidy: Add: - readability-* Remove: - readability-magic-numbers