From 65b759cdabf5cd4ac354b8df1c6784cc4561b408 Mon Sep 17 00:00:00 2001 From: tzachar Date: Mon, 13 Sep 2021 17:03:25 +0300 Subject: [PATCH] Slight complexity reduction (#195) * Slight complexity reduction Do not loop twice over sources table, instead keep a table mapping names to sources * Update lua/cmp/core.lua Co-authored-by: hrsh7th Co-authored-by: hrsh7th --- lua/cmp/core.lua | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lua/cmp/core.lua b/lua/cmp/core.lua index 612fabb..f1c69a0 100644 --- a/lua/cmp/core.lua +++ b/lua/cmp/core.lua @@ -72,6 +72,9 @@ end ---@type table core.sources = {} +---@type table +core.sources_by_name = {} + ---@type cmp.Context core.context = context.new() @@ -79,11 +82,13 @@ core.context = context.new() ---@param s cmp.Source core.register_source = function(s) core.sources[s.id] = s + core.sources_by_name[s.name] = s end ---Unregister source ---@param source_id string core.unregister_source = function(source_id) + core.sources_by_name[core.sources[source_id]] = nil core.sources[source_id] = nil end @@ -118,12 +123,11 @@ end core.get_sources = function(statuses) local sources = {} for _, c in pairs(config.get().sources) do - for _, s in pairs(core.sources) do - if c.name == s.name then - if not statuses or vim.tbl_contains(statuses, s.status) then - if s:is_available() then - table.insert(sources, s) - end + local s = core.sources_by_name[c.name] + if s then + if not statuses or vim.tbl_contains(statuses, s.status) then + if s:is_available() then + table.insert(sources, s) end end end