aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--nvim/.config/nvim/lazy-lock.json1
-rw-r--r--nvim/.config/nvim/lua/tobyvin.lua1
-rw-r--r--nvim/.config/nvim/lua/tobyvin/plugins/sessions.lua71
-rw-r--r--nvim/.config/nvim/lua/tobyvin/utils/session.lua42
4 files changed, 43 insertions, 72 deletions
diff --git a/nvim/.config/nvim/lazy-lock.json b/nvim/.config/nvim/lazy-lock.json
index 7fb977a..ea9252c 100644
--- a/nvim/.config/nvim/lazy-lock.json
+++ b/nvim/.config/nvim/lazy-lock.json
@@ -60,7 +60,6 @@
"ripgrep": { "branch": "master", "commit": "595e7845b87c1b9e6cfd4f1c23b3910dca3e15f0" },
"rust-tools.nvim": { "branch": "master", "commit": "71d2cf67b5ed120a0e31b2c8adb210dd2834242f" },
"scope.nvim": { "branch": "main", "commit": "2db6d31de8e3a98d2b41c0f0d1f5dc299ee76875" },
- "sessions": { "branch": "main", "commit": "83f6023f765d21d66dd422127a76127238ebebe4" },
"sqlite.lua": { "branch": "master", "commit": "376e4735c48e07dade3e6ff5f09a654a04f5d4ba" },
"telescope-all-recent.nvim": { "branch": "main", "commit": "f26fad245d5a468fe7fd0b494fc983f707f2c4f3" },
"telescope-dap.nvim": { "branch": "master", "commit": "313d2ea12ae59a1ca51b62bf01fc941a983d9c9c" },
diff --git a/nvim/.config/nvim/lua/tobyvin.lua b/nvim/.config/nvim/lua/tobyvin.lua
index 6748531..6676c51 100644
--- a/nvim/.config/nvim/lua/tobyvin.lua
+++ b/nvim/.config/nvim/lua/tobyvin.lua
@@ -9,5 +9,6 @@ vim.api.nvim_create_autocmd("User", {
callback = function()
require("tobyvin.autocmds")
require("tobyvin.diagnostic")
+ require("tobyvin.utils.session").setup()
end,
})
diff --git a/nvim/.config/nvim/lua/tobyvin/plugins/sessions.lua b/nvim/.config/nvim/lua/tobyvin/plugins/sessions.lua
deleted file mode 100644
index 11968c4..0000000
--- a/nvim/.config/nvim/lua/tobyvin/plugins/sessions.lua
+++ /dev/null
@@ -1,71 +0,0 @@
----@diagnostic disable: missing-parameter, duplicate-set-field
-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())
-
- if not session_dir:joinpath(name):exists() or #vim.fn.getbufinfo({ buflisted = 1, bufloaded = 1 }) > 0 then
- write(name)
- end
- 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
diff --git a/nvim/.config/nvim/lua/tobyvin/utils/session.lua b/nvim/.config/nvim/lua/tobyvin/utils/session.lua
new file mode 100644
index 0000000..9a40b29
--- /dev/null
+++ b/nvim/.config/nvim/lua/tobyvin/utils/session.lua
@@ -0,0 +1,42 @@
+local Path = require("plenary.path")
+local session_dir = Path:new(vim.fn.stdpath("data"), "session")
+local M = {}
+
+function M.path()
+ local name = vim.loop.cwd():gsub(":", "++"):gsub(Path.path.sep, "%%")
+ local file = ("%s.vim"):format(name)
+ return session_dir:joinpath(file).filename
+end
+
+function M.write()
+ local path = M.path()
+
+ session_dir:mkdir()
+ vim.cmd.mksession({ vim.fn.fnameescape(path), bang = true })
+end
+
+function M.read()
+ local file = M.path()
+ if file and vim.fn.filereadable(file) ~= 0 then
+ vim.cmd.source(vim.fn.fnameescape(file))
+ else
+ vim.notify("No session found", vim.log.levels.WARN)
+ end
+end
+
+function M.setup()
+ vim.keymap.set("n", "<leader>sr", M.read, { desc = "read session" })
+ vim.keymap.set("n", "<leader>sw", M.write, { desc = "write session" })
+
+ vim.api.nvim_create_autocmd("VimLeavePre", {
+ group = vim.api.nvim_create_augroup("session", { clear = true }),
+ callback = function()
+ if #vim.fn.getbufinfo({ buflisted = 1, bufloaded = 1 }) > 0 then
+ M.write()
+ end
+ end,
+ desc = "write session on vim exit",
+ })
+end
+
+return M