Compare commits
2 Commits
9c09a0ffcd
...
7514fa653f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7514fa653f | ||
|
|
63cf649210 |
@@ -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,9 +111,15 @@ 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
|
||||
|
||||
function Bookmarks.showTabName()
|
||||
vim.notify("Tabname: " .. vim.t.bookmark_tabname)
|
||||
end
|
||||
|
||||
return Bookmarks
|
||||
|
||||
Reference in New Issue
Block a user