diff --git a/lua/harpoon/init.lua b/lua/harpoon/init.lua index da7d550..99545d5 100644 --- a/lua/harpoon/init.lua +++ b/lua/harpoon/init.lua @@ -30,21 +30,48 @@ local M = {} --]] harpoon_config = harpoon_config or {} +-- tbl_deep_extend does not work the way you would think +function merge_table_impl(t1, t2) + for k, v in pairs(t2) do + if type(v) == "table" then + if type(t1[k]) == "table" then + merge_table_impl(t1[k], v) + else + t1[k] = v + end + else + t1[k] = v + end + end +end + +function merge_tables(...) + local out = {} + for i = 2, select("#",...) do + merge_table_impl(out, select(i, ...)) + end + return out +end + function ensure_correct_config(config) local projects = config.projects if projects[cwd] == nil then projects[cwd] = { - marks = {}, - term = {}, + mark = { + marks = {} + }, + term = { + cmds = {} + }, } end - if projects[cwd].marks == nil then - projects[cwd].marks = {} + if projects[cwd].mark == nil then + projects[cwd].mark = {marks = {}} end if projects[cwd].term == nil then - projects[cwd].term = {} + projects[cwd].term = {cmds = {}} end end @@ -95,7 +122,7 @@ M.setup = function(config) end local complete_config = - vim.tbl_deep_extend("force", + merge_tables( {projects = {}}, expand_dir(c_config), expand_dir(u_config), @@ -110,5 +137,13 @@ M.setup = function(config) harpoon_config = complete_config end +-- should only be called for debug purposes +M.print_config = function() + print(vim.inspect(harpoon_config)) +end + +-- Sets a default config with no values +M.setup({projects = {}}) + return M diff --git a/plugin/manage-a-mark.vim b/plugin/manage-a-mark.vim deleted file mode 100644 index 25ccea4..0000000 --- a/plugin/manage-a-mark.vim +++ /dev/null @@ -1,5 +0,0 @@ -augroup THE_PRIMEAGEN_HARPOON - autocmd! - autocmd VimLeave * :lua require('harpoon').save() - autocmd BufLeave * :lua require('harpoon.mark').store_offset() -augroup END diff --git a/plugin/mark.vim b/plugin/mark.vim index 25ccea4..ad61764 100644 --- a/plugin/mark.vim +++ b/plugin/mark.vim @@ -1,5 +1,5 @@ augroup THE_PRIMEAGEN_HARPOON autocmd! - autocmd VimLeave * :lua require('harpoon').save() + autocmd VimLeavePre * :lua require('harpoon').save() autocmd BufLeave * :lua require('harpoon.mark').store_offset() augroup END