{
    "cmake.buildTypes": [
        {
            "name": "Debug",
            "displayName": "Debug",
            "description": "Debug build with symbols and no optimization",
            "buildType": "Debug"
        },
        {
            "name": "Release", 
            "displayName": "Release",
            "description": "Optimized release build",
            "buildType": "Release"
        },
        {
            "name": "ASAN",
            "displayName": "AddressSanitizer", 
            "description": "Debug build with AddressSanitizer",
            "buildType": "ASAN"
        }
    ],
    "cmake.defaultVariants": {
        "buildType": {
            "default": "Release",
            "description": "The build type",
            "choices": {
                "debug": {
                    "short": "Debug",
                    "long": "Debug build with symbols",
                    "buildType": "Debug"
                },
                "release": {
                    "short": "Release", 
                    "long": "Optimized release build",
                    "buildType": "Release"
                },
                "asan": {
                    "short": "ASAN",
                    "long": "AddressSanitizer build",
                    "buildType": "ASAN"
                }
            }
        }
    },
    "files.associations": {
        "hash_map": "cpp",
        "string": "cpp",
        "unordered_map": "cpp",
        "string_view": "cpp"
    },
    "cmake.buildDirectory": "${workspaceFolder}/build",
    
    // Auto-split editor configuration for header/source files
    "workbench.editor.splitInGroupLayout": "horizontal",
    "workbench.editor.openSideBySideDirection": "right",
    
    // C++ specific configurations for side-by-side editing
    "C_Cpp.default.intelliSenseMode": "linux-clang-x64",
    "C_Cpp.default.compilerPath": "/usr/bin/clang++",
    "C_Cpp.default.cppStandard": "c++20",
    // File explorer settings for better C++ development
    // "explorer.sortOrder": "type",
    "explorer.fileNesting.enabled": true,
    "explorer.fileNesting.patterns": {
        // "*.cpp": "${capture}.hpp,${capture}.h",
        "*.hpp": "${capture}.cpp,${capture}.c,${capture}.tpp",
        // "*.h": "${capture}.cpp,${capture}.c,${capture}.cc"
    }
}
