// This config uses a separate build directory for rust-analyzer,
// so that r-a's checks don't block user `x` commands and vice-verse.
// R-a's build directory is located in `build-rust-analyzer`.
//
// To download rustfmt and proc macro server for r-a run the following command
// (proc macro server is downloaded automatically with pretty much any command,
// this specific one also downloads rustfmt):
// ```
// x fmt --check
// ```
// (if that doesn't work -- do `x clean` first)
{
    "git.detectSubmodulesLimit": 20,
    "rust-analyzer.linkedProjects": [
        "Cargo.toml",
        "compiler/rustc_codegen_cranelift/Cargo.toml",
        "compiler/rustc_codegen_gcc/Cargo.toml",
        "library/Cargo.toml",
        "src/bootstrap/Cargo.toml",
        "src/tools/rust-analyzer/Cargo.toml"
    ],
    "rust-analyzer.check.invocationStrategy": "once",
    "rust-analyzer.check.overrideCommand": [
        "python3",
        "x.py",
        "check",
        "--json-output",
        "--build-dir",
        "build-rust-analyzer"
    ],
    "rust-analyzer.rustfmt.overrideCommand": [
        "${workspaceFolder}/build/host/rustfmt/bin/rustfmt",
        "--edition=2024"
    ],
    "rust-analyzer.procMacro.server": "${workspaceFolder}/build/host/stage0/libexec/rust-analyzer-proc-macro-srv",
    "rust-analyzer.procMacro.enable": true,
    "rust-analyzer.rustc.source": "./Cargo.toml",
    "rust-analyzer.cargo.sysrootSrc": "./library",
    "rust-analyzer.cargo.extraEnv": {
        "RUSTC_BOOTSTRAP": "1"
    },
    "rust-analyzer.cargo.buildScripts.enable": true,
    "rust-analyzer.cargo.buildScripts.invocationStrategy": "once",
    "rust-analyzer.cargo.buildScripts.overrideCommand": [
        "python3",
        "x.py",
        "check",
        "--json-output",
        "--compile-time-deps",
        "--build-dir",
        "build-rust-analyzer"
    ],
    "rust-analyzer.server.extraEnv": {
        "RUSTC": "${workspaceFolder}/build/host/stage0/bin/rustc",
        "CARGO": "${workspaceFolder}/build/host/stage0/bin/cargo"
    },
    "files.associations": {
        "*.fixed": "rust",
        "*.pp": "rust",
        "*.mir": "rust"
    }
}
