feat: session management, qol keymaps
This commit is contained in:
parent
c8645eee5d
commit
503cd5c23b
5 changed files with 163 additions and 2 deletions
|
|
@ -158,8 +158,7 @@ return {
|
|||
callback = function()
|
||||
local opts = { buffer = true, silent = true }
|
||||
|
||||
-- Flutter run/quit
|
||||
vim.keymap.set('n', '<leader>fr', '<cmd>FlutterRun<cr>', vim.tbl_extend('force', opts, { desc = '[F]lutter [R]un' }))
|
||||
-- Flutter run/quit (instant, prompts for device)
|
||||
vim.keymap.set('n', '<leader>fq', '<cmd>FlutterQuit<cr>', vim.tbl_extend('force', opts, { desc = '[F]lutter [Q]uit' }))
|
||||
vim.keymap.set('n', '<leader>fR', '<cmd>FlutterRestart<cr>', vim.tbl_extend('force', opts, { desc = '[F]lutter Hot [R]estart' }))
|
||||
|
||||
|
|
|
|||
90
lua/custom/plugins/session.lua
Normal file
90
lua/custom/plugins/session.lua
Normal file
|
|
@ -0,0 +1,90 @@
|
|||
-- ========================================================================
|
||||
-- SESSION MANAGEMENT - Auto-save and restore your workspace
|
||||
-- ========================================================================
|
||||
--
|
||||
-- This plugin automatically saves your session (open files, window layout,
|
||||
-- buffers, etc.) when you quit Neovim and restores it when you reopen
|
||||
-- the same directory.
|
||||
--
|
||||
-- Features:
|
||||
-- - Auto-saves session on exit
|
||||
-- - Auto-restores session when opening Neovim in a directory
|
||||
-- - Saves per-directory (each project has its own session)
|
||||
-- - Saves open buffers, window splits, cursor positions, and more
|
||||
--
|
||||
-- Keymaps:
|
||||
-- <leader>ss - Save session manually
|
||||
-- <leader>sr - Restore session manually
|
||||
-- <leader>sd - Delete session for current directory
|
||||
-- <leader>sf - Find/search all sessions (Telescope)
|
||||
--
|
||||
-- Quit keymaps (in init.lua):
|
||||
-- <leader>Qa - Quit all windows
|
||||
-- <leader>Qq - Force quit all without saving
|
||||
-- <leader>Qw - Save all and quit
|
||||
--
|
||||
-- Sessions are saved in: ~/.local/share/nvim/sessions/
|
||||
-- ========================================================================
|
||||
|
||||
return {
|
||||
'rmagatti/auto-session',
|
||||
lazy = false, -- Load on startup to restore session
|
||||
opts = {
|
||||
-- Session save/restore options
|
||||
auto_session_enabled = true, -- Automatically save sessions
|
||||
auto_restore_enabled = true, -- Automatically restore sessions
|
||||
auto_save_enabled = true, -- Auto-save on exit
|
||||
auto_session_suppress_dirs = { '~/', '~/Downloads', '/' }, -- Don't save sessions in these dirs
|
||||
auto_session_use_git_branch = false, -- One session per directory (not per git branch)
|
||||
|
||||
-- What to save in the session
|
||||
auto_session_enable_last_session = false, -- Don't restore last session if not in a project
|
||||
|
||||
-- Hooks to run before/after session save/restore
|
||||
pre_save_cmds = {
|
||||
'Neotree close', -- Close Neo-tree before saving session
|
||||
},
|
||||
post_restore_cmds = {
|
||||
-- You can add commands to run after restore here
|
||||
},
|
||||
|
||||
-- Session lens (Telescope integration for browsing sessions)
|
||||
session_lens = {
|
||||
load_on_setup = true,
|
||||
theme_conf = { border = true },
|
||||
previewer = false,
|
||||
},
|
||||
},
|
||||
keys = {
|
||||
-- Manual session control
|
||||
{
|
||||
'<leader>ss',
|
||||
'<cmd>SessionSave<cr>',
|
||||
desc = '[S]ession: [S]ave',
|
||||
},
|
||||
{
|
||||
'<leader>sr',
|
||||
'<cmd>SessionRestore<cr>',
|
||||
desc = '[S]ession: [R]estore',
|
||||
},
|
||||
{
|
||||
'<leader>sd',
|
||||
'<cmd>SessionDelete<cr>',
|
||||
desc = '[S]ession: [D]elete',
|
||||
},
|
||||
{
|
||||
'<leader>sf',
|
||||
'<cmd>SessionSearch<cr>',
|
||||
desc = '[S]ession: [F]ind/search',
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require('auto-session').setup(opts)
|
||||
|
||||
-- Register with which-key
|
||||
require('which-key').add {
|
||||
{ '<leader>s', group = '[S]ession' },
|
||||
{ '<leader>Q', group = '[Q]uit' },
|
||||
}
|
||||
end,
|
||||
}
|
||||
|
|
@ -14,12 +14,56 @@ return {
|
|||
{ '\\', ':Neotree reveal<CR>', desc = 'NeoTree reveal', silent = true },
|
||||
},
|
||||
opts = {
|
||||
-- Don't open Neo-tree on startup, only when toggled
|
||||
close_if_last_window = true, -- Close Neo-tree if it's the last window
|
||||
popup_border_style = 'rounded',
|
||||
enable_git_status = true,
|
||||
enable_diagnostics = true,
|
||||
|
||||
-- Default to filesystem view
|
||||
default_component_configs = {
|
||||
indent = {
|
||||
padding = 0,
|
||||
},
|
||||
},
|
||||
|
||||
filesystem = {
|
||||
-- Follow the current file in the tree
|
||||
follow_current_file = {
|
||||
enabled = true,
|
||||
leave_dirs_open = false,
|
||||
},
|
||||
-- Use system commands for file operations
|
||||
use_libuv_file_watcher = true,
|
||||
|
||||
window = {
|
||||
position = 'left',
|
||||
width = 30,
|
||||
mappings = {
|
||||
['\\'] = 'close_window',
|
||||
-- Make <leader>sf work the same in Neo-tree as in editor
|
||||
['<leader>sf'] = 'telescope_find',
|
||||
['<leader>sg'] = 'telescope_grep',
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
-- Add custom commands for Telescope integration
|
||||
commands = {
|
||||
telescope_find = function(state)
|
||||
local node = state.tree:get_node()
|
||||
local path = node:get_id()
|
||||
require('telescope.builtin').find_files {
|
||||
cwd = vim.fn.isdirectory(path) == 1 and path or vim.fn.fnamemodify(path, ':h'),
|
||||
}
|
||||
end,
|
||||
telescope_grep = function(state)
|
||||
local node = state.tree:get_node()
|
||||
local path = node:get_id()
|
||||
require('telescope.builtin').live_grep {
|
||||
cwd = vim.fn.isdirectory(path) == 1 and path or vim.fn.fnamemodify(path, ':h'),
|
||||
}
|
||||
end,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue