13 Commits

Author SHA1 Message Date
55b0b4f434 chore(main): release 2.1.0 2024-06-12 03:54:06 +00:00
95d03ad545 chore(build): auto-generate vimdoc 2024-06-12 03:53:44 +00:00
a2fd3d9965 fix: remove expand() as stdpath() expands itself (#50) 2024-06-12 05:53:08 +02:00
5fe077056c chore(build): auto-generate vimdoc 2024-05-16 17:03:50 +00:00
3d443bd0a7 feat(persistence): add pre- and post- load hooks (#24)
* Add optional hook typings to config object

* Add optional hooks conditional calls

* Add hooks description to main readme
2024-05-16 19:03:16 +02:00
4982499c16 chore(build): auto-generate vimdoc 2024-01-19 15:14:59 +00:00
9dbe2648c6 fix: don't save gitrebase session (#44) 2024-01-19 16:14:29 +01:00
09af251a93 docs: folke => lazy.nvim (#39) 2024-01-19 16:14:01 +01:00
ad538bfd53 chore(main): release 2.0.0 (#36)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-15 21:42:03 +02:00
01d7fa95fe chore(build): auto-generate vimdoc 2023-10-15 19:41:11 +00:00
0361df7775 fix(start)!: session name is now based on the cwd when the session starts and not when the session ends. Fixes #1688 2023-10-15 21:40:27 +02:00
9730a073fd chore(main): release 1.2.1 (#34)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-13 08:56:34 +02:00
8f7cbccfb5 fix: dont save the session when only gitcommit buffers are present. Fixes #14 2023-10-13 08:47:08 +02:00
5 changed files with 69 additions and 7 deletions

View File

@ -1,5 +1,36 @@
# Changelog # Changelog
## [2.1.0](https://github.com/folke/persistence.nvim/compare/v2.0.0...v2.1.0) (2024-06-12)
### Features
* **persistence:** add `pre-` and `post-` load hooks ([#24](https://github.com/folke/persistence.nvim/issues/24)) ([3d443bd](https://github.com/folke/persistence.nvim/commit/3d443bd0a7e1d9eebfa37321fc8118d8d538af13))
### Bug Fixes
* don't save `gitrebase` session ([#44](https://github.com/folke/persistence.nvim/issues/44)) ([9dbe264](https://github.com/folke/persistence.nvim/commit/9dbe2648c67b678bf7fe688f03b57a2514e03e6f))
* remove expand() as stdpath() expands itself ([#50](https://github.com/folke/persistence.nvim/issues/50)) ([a2fd3d9](https://github.com/folke/persistence.nvim/commit/a2fd3d99656ac496e56233aa4a40dd045a16fdc4))
## [2.0.0](https://github.com/folke/persistence.nvim/compare/v1.2.1...v2.0.0) (2023-10-15)
### ⚠ BREAKING CHANGES
* **start:** session name is now based on the cwd when the session starts and not when the session ends. Fixes #1688
### Bug Fixes
* **start:** session name is now based on the cwd when the session starts and not when the session ends. Fixes [#1688](https://github.com/folke/persistence.nvim/issues/1688) ([0361df7](https://github.com/folke/persistence.nvim/commit/0361df7775f5b4ed51a6d7fe159438573b7f07a6))
## [1.2.1](https://github.com/folke/persistence.nvim/compare/v1.2.0...v1.2.1) (2023-10-13)
### Bug Fixes
* dont save the session when only `gitcommit` buffers are present. Fixes [#14](https://github.com/folke/persistence.nvim/issues/14) ([8f7cbcc](https://github.com/folke/persistence.nvim/commit/8f7cbccfb506fe6cb35db9ad966137c363b049c5))
## [1.2.0](https://github.com/folke/persistence.nvim/compare/v1.1.0...v1.2.0) (2023-10-13) ## [1.2.0](https://github.com/folke/persistence.nvim/compare/v1.1.0...v1.2.0) (2023-10-13)

View File

@ -15,7 +15,7 @@
Install the plugin with your preferred package manager: Install the plugin with your preferred package manager:
### [folke](https://github.com/folke/lazy.nvim) ### [lazy.nvim](https://github.com/folke/lazy.nvim)
```lua ```lua
-- Lua -- Lua
@ -34,10 +34,13 @@ Persistence comes with the following defaults:
```lua ```lua
{ {
dir = vim.fn.expand(vim.fn.stdpath("state") .. "/sessions/"), -- directory where session files are saved dir = vim.fn.stdpath("state") .. "/sessions/", -- directory where session files are saved
options = { "buffers", "curdir", "tabpages", "winsize" }, -- sessionoptions used for saving options = { "buffers", "curdir", "tabpages", "winsize" }, -- sessionoptions used for saving
pre_save = nil, -- a function to call before saving the session pre_save = nil, -- a function to call before saving the session
post_save = nil, -- a function to call after saving the session
save_empty = false, -- don't save if there are no open file buffers save_empty = false, -- don't save if there are no open file buffers
pre_load = nil, -- a function to call before loading the session
post_load = nil, -- a function to call after loading the session
} }
``` ```

View File

@ -1,4 +1,4 @@
*persistence.nvim.txt* For Neovim >= 0.8.0 Last change: 2023 October 13 *persistence.nvim.txt* For Neovim >= 0.8.0 Last change: 2024 June 12
============================================================================== ==============================================================================
Table of Contents *persistence.nvim-table-of-contents* Table of Contents *persistence.nvim-table-of-contents*
@ -32,7 +32,7 @@ INSTALLATION *persistence.nvim-persistence-installation*
Install the plugin with your preferred package manager: Install the plugin with your preferred package manager:
FOLKE ~ LAZY.NVIM ~
>lua >lua
-- Lua -- Lua
@ -52,10 +52,13 @@ Persistence comes with the following defaults:
>lua >lua
{ {
dir = vim.fn.expand(vim.fn.stdpath("state") .. "/sessions/"), -- directory where session files are saved dir = vim.fn.stdpath("state") .. "/sessions/", -- directory where session files are saved
options = { "buffers", "curdir", "tabpages", "winsize" }, -- sessionoptions used for saving options = { "buffers", "curdir", "tabpages", "winsize" }, -- sessionoptions used for saving
pre_save = nil, -- a function to call before saving the session pre_save = nil, -- a function to call before saving the session
post_save = nil, -- a function to call after saving the session
save_empty = false, -- don't save if there are no open file buffers save_empty = false, -- don't save if there are no open file buffers
pre_load = nil, -- a function to call before loading the session
post_load = nil, -- a function to call after loading the session
} }
< <

View File

@ -2,8 +2,11 @@ local M = {}
---@class PersistenceOptions ---@class PersistenceOptions
---@field pre_save? fun() ---@field pre_save? fun()
---@field post_save? fun()
---@field pre_load? fun()
---@field post_load? fun()
local defaults = { local defaults = {
dir = vim.fn.expand(vim.fn.stdpath("state") .. "/sessions/"), -- directory where session files are saved dir = vim.fn.stdpath("state") .. "/sessions/", -- directory where session files are saved
options = { "buffers", "curdir", "tabpages", "winsize", "skiprtp" }, -- sessionoptions used for saving options = { "buffers", "curdir", "tabpages", "winsize", "skiprtp" }, -- sessionoptions used for saving
save_empty = false, -- don't save if there are no open file buffers save_empty = false, -- don't save if there are no open file buffers
} }

View File

@ -1,6 +1,8 @@
local Config = require("persistence.config") local Config = require("persistence.config")
local M = {} local M = {}
---@type string?
M.current = nil
local e = vim.fn.fnameescape local e = vim.fn.fnameescape
@ -27,6 +29,7 @@ function M.setup(opts)
end end
function M.start() function M.start()
M.current = M.get_current()
vim.api.nvim_create_autocmd("VimLeavePre", { vim.api.nvim_create_autocmd("VimLeavePre", {
group = vim.api.nvim_create_augroup("persistence", { clear = true }), group = vim.api.nvim_create_augroup("persistence", { clear = true }),
callback = function() callback = function()
@ -39,6 +42,12 @@ function M.start()
if vim.bo[b].buftype ~= "" then if vim.bo[b].buftype ~= "" then
return false return false
end end
if vim.bo[b].filetype == "gitcommit" then
return false
end
if vim.bo[b].filetype == "gitrebase" then
return false
end
return vim.api.nvim_buf_get_name(b) ~= "" return vim.api.nvim_buf_get_name(b) ~= ""
end, vim.api.nvim_list_bufs()) end, vim.api.nvim_list_bufs())
if #bufs == 0 then if #bufs == 0 then
@ -47,18 +56,23 @@ function M.start()
end end
M.save() M.save()
if type(Config.options.post_save) == "function" then
Config.options.post_save()
end
end, end,
}) })
end end
function M.stop() function M.stop()
M.current = nil
pcall(vim.api.nvim_del_augroup_by_name, "persistence") pcall(vim.api.nvim_del_augroup_by_name, "persistence")
end end
function M.save() function M.save()
local tmp = vim.o.sessionoptions local tmp = vim.o.sessionoptions
vim.o.sessionoptions = table.concat(Config.options.options, ",") vim.o.sessionoptions = table.concat(Config.options.options, ",")
vim.cmd("mks! " .. e(M.get_current())) vim.cmd("mks! " .. e(M.current or M.get_current()))
vim.o.sessionoptions = tmp vim.o.sessionoptions = tmp
end end
@ -66,7 +80,15 @@ function M.load(opt)
opt = opt or {} opt = opt or {}
local sfile = opt.last and M.get_last() or M.get_current() local sfile = opt.last and M.get_last() or M.get_current()
if sfile and vim.fn.filereadable(sfile) ~= 0 then if sfile and vim.fn.filereadable(sfile) ~= 0 then
if type(Config.options.pre_load) == "function" then
Config.options.pre_load()
end
vim.cmd("silent! source " .. e(sfile)) vim.cmd("silent! source " .. e(sfile))
if type(Config.options.post_load) == "function" then
Config.options.post_load()
end
end end
end end