1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
local M = {
"echasnovski/mini.sessions",
name = "sessions",
event = { "VimLeavePre" },
dependencies = {
"nvim-lua/plenary.nvim",
},
config = true,
}
function M.init()
vim.keymap.set("n", "<leader>sr", function()
require("mini.sessions").read()
end, { desc = "read session" })
vim.keymap.set("n", "<leader>sw", function()
require("mini.sessions").write()
end, { desc = "write session" })
vim.keymap.set("n", "<leader>sd", function()
require("mini.sessions").delete()
end, { desc = "delete session" })
vim.keymap.set("n", "<leader>ss", function()
require("mini.sessions").select()
end, { desc = "select session" })
end
function M.config()
local session_dir = require("plenary.path"):new(vim.fn.stdpath("data")):joinpath("session")
session_dir:mkdir()
local session_name = function()
if vim.v.this_session ~= "" then
return vim.fn.fnamemodify(vim.v.this_session, ":t")
end
return vim.loop.cwd():gsub(":", "++"):gsub(session_dir.path.sep, "%%")
end
local read = require("mini.sessions").read
require("mini.sessions").read = function(name)
name = vim.F.if_nil(name, session_name())
if session_dir:joinpath(name):exists() then
read(name)
else
vim.notify("No session found", vim.log.levels.WARN)
end
end
local write = require("mini.sessions").write
require("mini.sessions").write = function(name)
name = vim.F.if_nil(name, session_name())
write(name)
end
local delete = require("mini.sessions").delete
require("mini.sessions").delete = function(name)
name = vim.F.if_nil(name, session_name())
delete(name)
end
require("mini.sessions").setup()
end
return M
|