Compare commits
2 Commits
9c09a0ffcd
...
7514fa653f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7514fa653f | ||
|
|
63cf649210 |
@@ -1,12 +1,12 @@
|
|||||||
local Bookmarks = {}
|
local Bookmarks = {}
|
||||||
local H = {
|
local H = {
|
||||||
bookmarks = {},
|
bookmarks = {},
|
||||||
bookmarksFilePath = ".bookmarks",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Bookmarks.setup()
|
function Bookmarks.setup()
|
||||||
_G.Bookmarks = Bookmarks
|
_G.Bookmarks = Bookmarks
|
||||||
|
|
||||||
|
--Ensure our data is saved in the session
|
||||||
vim.opt.sessionoptions:append("globals")
|
vim.opt.sessionoptions:append("globals")
|
||||||
|
|
||||||
-- Attach to mini.sessions
|
-- Attach to mini.sessions
|
||||||
@@ -30,70 +30,21 @@ function Bookmarks.setup()
|
|||||||
|
|
||||||
local augroup = vim.api.nvim_create_augroup("bookmark.nvim", {clear=true})
|
local augroup = vim.api.nvim_create_augroup("bookmark.nvim", {clear=true})
|
||||||
vim.api.nvim_create_autocmd(
|
vim.api.nvim_create_autocmd(
|
||||||
{"DirChanged"},
|
{"SessionLoadPost"},
|
||||||
{
|
|
||||||
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"},
|
|
||||||
{
|
{
|
||||||
pattern = {"*"},
|
pattern = {"*"},
|
||||||
callback = H.saveBookmarks,
|
callback = H.loadBookmarks,
|
||||||
group = augroup,
|
group = augroup,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
|
|
||||||
function H.loadBookmarks()
|
function H.loadBookmarks()
|
||||||
--clear current bookmarks
|
H.bookmarks = vim.json.decode(vim.g.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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function H.saveBookmarks()
|
function H.saveBookmarks()
|
||||||
if #H.bookmarks > 0 or vim.fn.filereadable(H.bookmarksFilePath) == 1 then
|
vim.g.Bookmarks = vim.json.encode(H.bookmarks)
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function Bookmarks.addBookmark()
|
function Bookmarks.addBookmark()
|
||||||
@@ -102,6 +53,7 @@ function Bookmarks.addBookmark()
|
|||||||
local file = vim.api.nvim_buf_get_name(0)
|
local file = vim.api.nvim_buf_get_name(0)
|
||||||
local cursor = vim.api.nvim_win_get_cursor(0)
|
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||||
table.insert(H.bookmarks, {name = input, file = file, cursor = cursor})
|
table.insert(H.bookmarks, {name = input, file = file, cursor = cursor})
|
||||||
|
H.saveBookmarks()
|
||||||
vim.notify("Bookmark \"" .. input .. "\" added")
|
vim.notify("Bookmark \"" .. input .. "\" added")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
@@ -119,6 +71,7 @@ function Bookmarks.deleteBookmark()
|
|||||||
Bookmarks.selectBookmark("Delete", function(bookmark, idx)
|
Bookmarks.selectBookmark("Delete", function(bookmark, idx)
|
||||||
if idx then
|
if idx then
|
||||||
table.remove(H.bookmarks, idx)
|
table.remove(H.bookmarks, idx)
|
||||||
|
H.saveBookmark()
|
||||||
vim.notify("Deleted bookmark \"".. bookmark.name .. "\"")
|
vim.notify("Deleted bookmark \"".. bookmark.name .. "\"")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
@@ -158,9 +111,15 @@ function Bookmarks.loadTabNames()
|
|||||||
if tabnames then
|
if tabnames then
|
||||||
tabnames = vim.json.decode(tabnames)
|
tabnames = vim.json.decode(tabnames)
|
||||||
for k,v in pairs(tabnames) do
|
for k,v in pairs(tabnames) do
|
||||||
|
if vim.t[k] then
|
||||||
vim.t[k].bookmark_tabname = v
|
vim.t[k].bookmark_tabname = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Bookmarks.showTabName()
|
||||||
|
vim.notify("Tabname: " .. vim.t.bookmark_tabname)
|
||||||
end
|
end
|
||||||
|
|
||||||
return Bookmarks
|
return Bookmarks
|
||||||
|
|||||||
Reference in New Issue
Block a user