From 096765c4892e2daa3e17f9f83790beb03d7e711a Mon Sep 17 00:00:00 2001 From: MasouShizuka Date: Sat, 4 May 2024 02:18:51 +0800 Subject: [PATCH] feat: add function `save_last_and_quit` --- README.md | 9 +++++++++ init.lua | 16 +++++++++++++++- 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 862498b..fc43400 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,15 @@ run = "plugin projects --args=delete_all" desc = "Delete all projects" ``` +If you want to save the last project when exiting, map the default `quit` key to: + +```toml +[[manager.prepend_keymap]] +on = [ "q" ] +run = "plugin projects --args=quit" +desc = "Save last project and exit the process" +``` + --- Additionally there are configurations that can be done using the plugin's `setup` function in Yazi's `init.lua`, i.e. `~/.config/yazi/init.lua`. diff --git a/init.lua b/init.lua index 6c8b843..bbe6932 100644 --- a/init.lua +++ b/init.lua @@ -215,6 +215,15 @@ local delete_project = ya.sync(function(state, idx) end end) +local save_last_and_quit = ya.sync(function(state) + local projects = _get_projects() + projects.last = _get_current_project() + + _save_state(projects) + + ya.manager_emit("quit", {}) +end) + return { entry = function(_, args) local action = args[1] @@ -254,6 +263,11 @@ return { return end + if action == "quit" then + save_last_and_quit() + return + end + local projects = _get_projects() if action == "load_last" then @@ -266,7 +280,7 @@ return { local list = projects.list - local selected_idx = ya.which({ cands = list }) + local selected_idx = ya.which({ cands = list, silent = false }) if not selected_idx then return end