Skip to content

Commit 2f850ca

Browse files
authored
feat: support default configs from external sources (#428)
1 parent 96bc982 commit 2f850ca

File tree

1 file changed

+24
-20
lines changed

1 file changed

+24
-20
lines changed

lua/neo-tree/setup/init.lua

+24-20
Original file line numberDiff line numberDiff line change
@@ -396,43 +396,47 @@ M.merge_config = function(user_config, is_auto_config)
396396

397397
highlights.setup()
398398

399-
-- setup the default values for all sources
400-
normalize_mappings(default_config)
401-
normalize_mappings(user_config)
402-
merge_renderers(default_config, nil, user_config)
403-
404399
-- used to either limit the sources that or loaded, or add extra external sources
405400
local all_sources = {}
406401
local all_source_names = {}
407402
for _, source in ipairs(user_config.sources or default_config.sources) do
408403
local parts = utils.split(source, ".")
409404
local name = parts[#parts]
410-
if #parts > 1 then
411-
-- fully qualified module name
412-
all_sources[name] = source
413-
else
405+
local is_internal_ns, is_external_ns = false, false
406+
local module
407+
408+
if #parts == 1 then
414409
-- might be a module name in the internal namespace
415-
local is_internal_ns, _ = pcall(require, "neo-tree.sources." .. source)
416-
if is_internal_ns then
417-
all_sources[name] = "neo-tree.sources." .. name
410+
is_internal_ns, module = pcall(require, "neo-tree.sources." .. source)
411+
end
412+
if is_internal_ns then
413+
name = module.name or name
414+
all_sources[name] = "neo-tree.sources." .. name
415+
else
416+
-- fully qualified module name
417+
-- or just a root level module name
418+
is_external_ns, module = pcall(require, source)
419+
if is_external_ns then
420+
name = module.name or name
421+
all_sources[name] = source
418422
else
419-
-- could also be a root level module name
420-
local exists, module = pcall(require, source)
421-
if exists then
422-
all_sources[name] = module.name or source
423-
else
424-
log.error("Source module not found", source)
425-
name = nil
426-
end
423+
log.error("Source module not found", source)
424+
name = nil
427425
end
428426
end
429427
if name then
428+
default_config[name] = module.default_config or default_config[name]
430429
table.insert(all_source_names, name)
431430
end
432431
end
433432
log.debug("Sources to load: ", vim.inspect(all_sources))
434433
require("neo-tree.command.parser").setup(all_source_names)
435434

435+
-- setup the default values for all sources
436+
normalize_mappings(default_config)
437+
normalize_mappings(user_config)
438+
merge_renderers(default_config, nil, user_config)
439+
436440
for source_name, mod_root in pairs(all_sources) do
437441
local module = require(mod_root)
438442
default_config[source_name] = default_config[source_name]

0 commit comments

Comments
 (0)