Add persistence

This commit is contained in:
hlstwizard 2026-04-01 13:57:54 +08:00
parent dced8c0e0b
commit 12a46ad57b
3 changed files with 54 additions and 0 deletions

View File

@ -22,6 +22,7 @@
"nvim-treesitter": { "branch": "main", "commit": "7caec274fd19c12b55902a5b795100d21531391f" }, "nvim-treesitter": { "branch": "main", "commit": "7caec274fd19c12b55902a5b795100d21531391f" },
"nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" }, "nvim-web-devicons": { "branch": "master", "commit": "d7462543c9e366c0d196c7f67a945eaaf5d99414" },
"opencode.nvim": { "branch": "main", "commit": "df533d6da724109bf08446392db860fdceddbd0c" }, "opencode.nvim": { "branch": "main", "commit": "df533d6da724109bf08446392db860fdceddbd0c" },
"persistence.nvim": { "branch": "main", "commit": "b20b2a7887bd39c1a356980b45e03250f3dce49c" },
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "6fea601bd2b694c6f2ae08a6c6fab14930c60e2c" },
"telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" },

View File

@ -25,6 +25,28 @@ return {
}, },
}, },
config = function() config = function()
local sidebar_filetypes = {
['neo-tree'] = true,
['snacks_layout_box'] = true,
['snacks_terminal'] = true,
['toggleterm'] = true,
['opencode'] = true,
}
local function focus_main_window()
for _, win in ipairs(vim.api.nvim_tabpage_list_wins(0)) do
local buf = vim.api.nvim_win_get_buf(win)
local ft = vim.bo[buf].filetype
local bt = vim.bo[buf].buftype
if not sidebar_filetypes[ft] and bt == '' then
vim.api.nvim_set_current_win(win)
return true
end
end
return false
end
---@type opencode.Opts ---@type opencode.Opts
vim.g.opencode_opts = { vim.g.opencode_opts = {
server = { server = {
@ -60,5 +82,21 @@ return {
-- You may want these if you use the opinionated `<C-a>` and `<C-x>` keymaps above — otherwise consider `<leader>o…` (and remove terminal mode from the `toggle` keymap) -- You may want these if you use the opinionated `<C-a>` and `<C-x>` keymaps above — otherwise consider `<leader>o…` (and remove terminal mode from the `toggle` keymap)
vim.keymap.set('n', '+', '<C-a>', { desc = 'Increment under cursor', noremap = true }) vim.keymap.set('n', '+', '<C-a>', { desc = 'Increment under cursor', noremap = true })
vim.keymap.set('n', '-', '<C-x>', { desc = 'Decrement under cursor', noremap = true }) vim.keymap.set('n', '-', '<C-x>', { desc = 'Decrement under cursor', noremap = true })
vim.api.nvim_create_autocmd('VimEnter', {
callback = function()
if vim.fn.argc() == 1 and vim.fn.isdirectory(vim.fn.argv(0)) == 1 then
vim.schedule(function()
pcall(function() require('persistence').load() end)
vim.schedule(function()
focus_main_window()
require('opencode').toggle()
focus_main_window()
end)
end)
end
end,
})
end, end,
} }

View File

@ -0,0 +1,15 @@
return {
{
'folke/persistence.nvim',
event = 'BufReadPre',
opts = {
need = 1,
},
keys = {
{ '<leader>qs', function() require('persistence').load() end, desc = '[Q]uit: restore [S]ession' },
{ '<leader>qS', function() require('persistence').select() end, desc = '[Q]uit: restore [S]ession (picker)' },
{ '<leader>ql', function() require('persistence').load { last = true } end, desc = '[Q]uit: restore [L]ast session' },
{ '<leader>qd', function() require('persistence').stop() end, desc = '[Q]uit: [D]isable session save' },
},
},
}