feat(plugins): add resession
This commit is contained in:
parent
07ec1f7cd3
commit
08aee7c9e0
2 changed files with 117 additions and 0 deletions
100
plugins/resession/default.nix
Normal file
100
plugins/resession/default.nix
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
# homepage: https://github.com/stevearc/resession.nvim
|
||||
{ lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
extra = {
|
||||
packages = [
|
||||
(import ./package.nix { inherit lib pkgs; })
|
||||
];
|
||||
|
||||
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/resession.lua#L45-L49
|
||||
config = ''
|
||||
require("resession").setup({
|
||||
buf_filter = function(bufnr) return require("astrocore.buffer").is_restorable(bufnr) end,
|
||||
tab_buf_filter = function(tabpage, bufnr) return vim.tbl_contains(vim.t[tabpage].bufs, bufnr) end,
|
||||
extensions = { astrocore = { enable_in_tab = true } },
|
||||
})
|
||||
'';
|
||||
};
|
||||
|
||||
rootOpts = {
|
||||
autoGroups.resession = { };
|
||||
autoCmd = [
|
||||
{
|
||||
desc = "Save session on close";
|
||||
event = "VimLeavePre";
|
||||
group = "resession";
|
||||
|
||||
# https://github.com/AstroNvim/AstroNvim/blob/v4.7.7/lua/astronvim/plugins/resession.lua#L31-L39
|
||||
callback.__raw = ''
|
||||
function()
|
||||
local buf_utils = require "astrocore.buffer"
|
||||
local autosave = buf_utils.sessions.autosave
|
||||
if autosave and buf_utils.is_valid_session() then
|
||||
local save = require("resession").save
|
||||
if autosave.last then save("last", { notify = false }) end
|
||||
if autosave.cwd then save(vim.fn.getcwd(), { dir = "dirsession", notify = false }) end
|
||||
end
|
||||
end
|
||||
'';
|
||||
}
|
||||
];
|
||||
|
||||
keymaps = [
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>Sl";
|
||||
action.__raw = "function() require('resession').load 'last' end";
|
||||
options.desc = "Load last session";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>Ss";
|
||||
action.__raw = "function() require('resession').save() end";
|
||||
options.desc = "Save this session";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>SS";
|
||||
action.__raw = "function() require('resession').save(vim.fn.getcwd(), { dir = 'dirsession' }) end";
|
||||
options.desc = "Save this dirsession";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>St";
|
||||
action.__raw = "function() require('resession').save_tab() end";
|
||||
options.desc = "Save this tab's session";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>Sd";
|
||||
action.__raw = "function() require('resession').delete() end";
|
||||
options.desc = "Delete a session";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>SD";
|
||||
action.__raw = "function() require('resession').delete(nil, { dir = 'dirsession' }) end";
|
||||
options.desc = "Delete a dirsession";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>Sf";
|
||||
action.__raw = "function() require('resession').load() end";
|
||||
options.desc = "Load a session";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>SF";
|
||||
action.__raw = "function() require('resession').load(nil, { dir = 'dirsession' }) end";
|
||||
options.desc = "Load a dirsession";
|
||||
}
|
||||
{
|
||||
mode = "n";
|
||||
key = "<leader>S.";
|
||||
action.__raw = "function() require('resession').load(vim.fn.getcwd(), { dir = 'dirsession' }) end";
|
||||
options.desc = "Load current dirsession";
|
||||
}
|
||||
];
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue