diff --git a/README.md b/README.md index 991d7e7..a1a259b 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,8 @@ The following are the default configurations: ```lua -- ~/.config/yazi/init.lua require("bookmarks"):setup({ - save_last_directory = false, + save_last_directory = false, -- DEPRECATED - will be removed in the future. Use `last_directory` + last_directory = { enable = false, persist = false }, persist = "none", desc_format = "full", notify = { @@ -101,6 +102,15 @@ require("bookmarks"):setup({ When enabled, a new bookmark is automatically created in `'` which allows the user to jump back to the last directory. +***NOTE:*** This option is **DEPRECATED** and will be removed in the future in favor of `last_directory`. + +### `last_directory` + +When enabled, a new bookmark is automatically created in `'` which allows the user to jump back to +the last directory. + +There's also the option to enable persistence to this automatic bookmark. + ### `persist` When enabled the bookmarks will persist, i.e. if you close and reopen Yazi they will still be diff --git a/init.lua b/init.lua index 93e57bd..ba22263 100644 --- a/init.lua +++ b/init.lua @@ -88,10 +88,19 @@ local _save_state = ya.sync(function(state, bookmarks) ps.pub_to(0, "@bookmarks", save_state) end) -local _save_last_directory = ya.sync(function(state) +local _save_last_directory = ya.sync(function(state, persist) + if persist then + ps.sub_remote("@bookmarks-lastdir", function(body) state.curr_dir = body end) + end + ps.sub("cd", function() local file = _get_hovered_file() state.last_dir = state.curr_dir + + if persist and state.last_dir then + ps.pub_to(0, "@bookmarks-lastdir", state.last_dir) + end + state.curr_dir = { on = "'", desc = _generate_description(file), @@ -217,8 +226,13 @@ return { return end + -- TODO: DEPRECATED if args.save_last_directory then _save_last_directory() + elseif type(args.last_directory) == "table" then + if args.last_directory.enable then + _save_last_directory(args.last_directory.persist) + end end if args.persist == "all" or args.persist == "vim" then