add module session.lua

This commit is contained in:
2022-06-14 23:59:27 +03:00
parent 99d6dca16e
commit be14833c3c
3 changed files with 72 additions and 0 deletions

View File

@@ -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", "<leader>ss", save_session)
vim.keymap.set("n", "<leader>sl", list_sessions)
vim.keymap.set("n", "<leader>su", use_session)
vim.keymap.set("n", "<leader>sd", delete_session)

View File

@@ -44,3 +44,5 @@ telescope.setup({
if vim.fn.has("win32") == 0 then
require("telescope").load_extension("fzf")
end
telescope.load_extension("possession")