diff options
author | Toby Vincent <tobyv13@gmail.com> | 2023-05-01 14:45:58 -0500 |
---|---|---|
committer | Toby Vincent <tobyv13@gmail.com> | 2023-05-01 15:05:40 -0500 |
commit | 848c344447b56c27f4df70296210110596b57352 (patch) | |
tree | d97108702669ea701434a718de8e42be215227d1 | |
parent | 064d0757479ddf5da3cab8075d2e2ed99d861d71 (diff) |
feat(nvim): replace mini.sessions with mksession helper functions
-rw-r--r-- | nvim/.config/nvim/lazy-lock.json | 1 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin.lua | 1 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/plugins/sessions.lua | 71 | ||||
-rw-r--r-- | nvim/.config/nvim/lua/tobyvin/utils/session.lua | 42 |
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 |