-- Keep the values around between reloads _TelescopeConfigurationValues = _TelescopeConfigurationValues or {} local function first_non_null(...) local n = select('#', ...) for i = 1, n do local value = select(i, ...) if value ~= nil then return value end end end -- TODO: Add other major configuration points here. -- border -- borderchars -- selection_strategy local config = {} config.values = _TelescopeConfigurationValues function config.set_defaults(defaults) defaults = defaults or {} local function get(name, default_val) return first_non_null(defaults[name], config.values[name], default_val) end local function set(name, default_val) config.values[name] = get(name, default_val) end set("selection_strategy", "reset") set("layout_strategy", "horizontal") set("width", 0.75) set("winblend", 0) -- TODO: Shortenpath -- Decide how to propagate that to all the opts everywhere. -- NOT STABLE. DO NOT USE set("horizontal_config", { get_preview_width = function(columns, _) return math.floor(columns * 0.75) end, }) end function config.clear_defaults() for k, _ in pairs(config.values) do config.values[k] = nil end end config.set_defaults() return config