diff --git a/neovim/.config/nvim/init.lua b/neovim/.config/nvim/init.lua index fe6371c..f7db2cc 100644 --- a/neovim/.config/nvim/init.lua +++ b/neovim/.config/nvim/init.lua @@ -201,6 +201,7 @@ require("user.lsp") require("user.comment") require("user.snippets") require("user.lualine") +require("user.session") require("user.remaps") require("user.cmds") require("user.aus") diff --git a/neovim/.config/nvim/lua/user/session.lua b/neovim/.config/nvim/lua/user/session.lua new file mode 100644 index 0000000..bfb55cb --- /dev/null +++ b/neovim/.config/nvim/lua/user/session.lua @@ -0,0 +1,69 @@ +local function get_available_session_names() + local sessions = require("possession.query").as_list() + + local available_names = {} + for _, session in ipairs(sessions) do + table.insert(available_names, session.name) + end + + return available_names +end + +local function choose_session(available_names, prompt) + local name + + vim.ui.select(available_names, { + prompt = prompt, + }, function(ans) + name = ans + end) + + return name +end + +local function save_session() + local default_name = "temp-session-" .. math.random(0, 99) + local name + + vim.ui.input({ + prompt = "Session name: ", + }, function(ans) + name = ans or default_name + end) + + require("possession.commands").save(name) +end + +local function list_sessions() + require("telescope").extensions.possession.list() +end + +local function use_session() + local available_names = get_available_session_names() + local name = choose_session(available_names, "Choose session to load") + + if name == nil then + print("no session? :(") + return + end + + require("possession.commands").load(name) +end + +local function delete_session() + local available_names = get_available_session_names() + local name = choose_session(available_names, "Choose session to delete") + + if name == nil then + print("no session? :(") + return + end + + require("possession.commands").delete(name) +end + +-- remaps +vim.keymap.set("n", "ss", save_session) +vim.keymap.set("n", "sl", list_sessions) +vim.keymap.set("n", "su", use_session) +vim.keymap.set("n", "sd", delete_session) diff --git a/neovim/.config/nvim/lua/user/telescope.lua b/neovim/.config/nvim/lua/user/telescope.lua index ae83948..e8d6992 100644 --- a/neovim/.config/nvim/lua/user/telescope.lua +++ b/neovim/.config/nvim/lua/user/telescope.lua @@ -44,3 +44,5 @@ telescope.setup({ if vim.fn.has("win32") == 0 then require("telescope").load_extension("fzf") end + +telescope.load_extension("possession")