diff --git a/lua/bookmark.lua b/lua/bookmark.lua index e9fa24b..537c08a 100644 --- a/lua/bookmark.lua +++ b/lua/bookmark.lua @@ -1,12 +1,12 @@ local Bookmarks = {} local H = { bookmarks = {}, - bookmarksFilePath = ".bookmarks", } function Bookmarks.setup() _G.Bookmarks = Bookmarks + --Ensure our data is saved in the session vim.opt.sessionoptions:append("globals") -- Attach to mini.sessions @@ -30,70 +30,21 @@ function Bookmarks.setup() local augroup = vim.api.nvim_create_augroup("bookmark.nvim", {clear=true}) vim.api.nvim_create_autocmd( - {"DirChanged"}, - { - pattern = {"global"}, - callback = H.loadBookmarks, - group = augroup, - } - ) - vim.api.nvim_create_autocmd( - {"DirChangedPre"}, - { - pattern = {"global"}, - callback = H.saveBookmarks, - group = augroup, - } - ) - vim.api.nvim_create_autocmd( - {"SessionWritePost"}, - { - callback = H.saveBookmarks, - group = augroup, - } - ) - vim.api.nvim_create_autocmd( - {"VimLeavePre"}, + {"SessionLoadPost"}, { pattern = {"*"}, - callback = H.saveBookmarks, + callback = H.loadBookmarks, group = augroup, } ) end function H.loadBookmarks() - --clear current bookmarks - H.bookmarks = {} - H.bookmarksFilePath = ".bookmarks" - local path = vim.fs.find(".bookmarks", {upward = true, type="file"})[1] - if not path then - return - end - H.bookmarksFilePath = path - local file = io.open(H.bookmarksFilePath, "r") - if file then - local fileContent = file:read("*a") - file:close() - if fileContent and fileContent ~= "" then - H.bookmarks = vim.json.decode(fileContent) - end - else - vim.notify("Failed to load Bookmarks") - end + H.bookmarks = vim.json.decode(vim.g.Bookmarks) end function H.saveBookmarks() - if #H.bookmarks > 0 or vim.fn.filereadable(H.bookmarksFilePath) == 1 then - local file = io.open(H.bookmarksFilePath, "w") - if file then - file:write(vim.json.encode(H.bookmarks)) - file:flush() - file:close() - else - vim.notify("Failed to save Bookmarks") - end - end + vim.g.Bookmarks = vim.json.encode(H.bookmarks) end function Bookmarks.addBookmark() @@ -102,6 +53,7 @@ function Bookmarks.addBookmark() local file = vim.api.nvim_buf_get_name(0) local cursor = vim.api.nvim_win_get_cursor(0) table.insert(H.bookmarks, {name = input, file = file, cursor = cursor}) + H.saveBookmarks() vim.notify("Bookmark \"" .. input .. "\" added") end end) @@ -119,6 +71,7 @@ function Bookmarks.deleteBookmark() Bookmarks.selectBookmark("Delete", function(bookmark, idx) if idx then table.remove(H.bookmarks, idx) + H.saveBookmark() vim.notify("Deleted bookmark \"".. bookmark.name .. "\"") end end) @@ -158,7 +111,9 @@ function Bookmarks.loadTabNames() if tabnames then tabnames = vim.json.decode(tabnames) for k,v in pairs(tabnames) do - vim.t[k].bookmark_tabname = v + if vim.t[k] then + vim.t[k].bookmark_tabname = v + end end end end