#include "lumacs/config.hpp"
#include <algorithm>

namespace lumacs {

Config::Config() {
    set_defaults();
}

void Config::set(const std::string& key, const ConfigValue& value) {
    values_[key] = value;
}

bool Config::has(const std::string& key) const {
    return values_.find(key) != values_.end();
}

std::vector<std::string> Config::keys() const {
    std::vector<std::string> result;
    result.reserve(values_.size());
    
    for (const auto& [key, value] : values_) {
        result.push_back(key);
    }
    
    std::sort(result.begin(), result.end());
    return result;
}

void Config::set_defaults() {
    // Display settings
    set("show_line_numbers", true);
    set("line_number_width", 6);
    
    // Editor settings
    set("tab_width", 4);
    set("auto_save", false);
    set("auto_save_interval", 30);  // seconds
    
    // Search settings
    set("case_sensitive_search", false);
    set("incremental_search", true);
}

} // namespace lumacs