add module session.lua
This commit is contained in:
@@ -201,6 +201,7 @@ require("user.lsp")
|
|||||||
require("user.comment")
|
require("user.comment")
|
||||||
require("user.snippets")
|
require("user.snippets")
|
||||||
require("user.lualine")
|
require("user.lualine")
|
||||||
|
require("user.session")
|
||||||
require("user.remaps")
|
require("user.remaps")
|
||||||
require("user.cmds")
|
require("user.cmds")
|
||||||
require("user.aus")
|
require("user.aus")
|
||||||
|
|||||||
69
neovim/.config/nvim/lua/user/session.lua
Normal file
69
neovim/.config/nvim/lua/user/session.lua
Normal 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)
|
||||||
@@ -44,3 +44,5 @@ telescope.setup({
|
|||||||
if vim.fn.has("win32") == 0 then
|
if vim.fn.has("win32") == 0 then
|
||||||
require("telescope").load_extension("fzf")
|
require("telescope").load_extension("fzf")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
telescope.load_extension("possession")
|
||||||
|
|||||||
Reference in New Issue
Block a user