-- [[ Basic Autocommands ]] -- See `:help lua-guide-autocommands` -- Highlight when yanking (copying) text -- Try it with `yap` in normal mode -- See `:help vim.highlight.on_yank()` vim.api.nvim_create_autocmd('TextYankPost', { desc = 'Highlight when yanking (copying) text', group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }), callback = function() vim.highlight.on_yank() end, }) local autosave_group = vim.api.nvim_create_augroup('autosaving', { clear = true }) vim.api.nvim_create_autocmd('FocusLost', { group = autosave_group, pattern = '*', command = 'silent! wa', -- Save all files when moving away from the window }) vim.api.nvim_create_autocmd('InsertLeave', { group = autosave_group, pattern = '*', command = 'silent! wa', -- Save all files when leaving insert mode }) -- vim.api.nvim_create_autocmd('TextChanged', { -- group = autosave_group, -- pattern = '*', -- command = 'silent! wa', -- Save all files when text is changed -- }) vim.api.nvim_create_autocmd('User', { pattern = 'OilActionsPost', callback = function(event) if event.data.actions.type == 'move' then Snacks.rename.on_rename_file(event.data.actions.src_url, event.data.actions.dest_url) end end, }) local fidget_group = vim.api.nvim_create_augroup('CodeCompanionFidgetHooks', { clear = true }) vim.api.nvim_create_autocmd({ 'User' }, { pattern = 'CodeCompanionRequestStarted', group = fidget_group, callback = function(event) local FidgetHelper = require 'utils.fidget_helper' -- Pass event instead of request if the callback receives the full event object local handle = FidgetHelper:create_progress_handle(event) FidgetHelper:store_progress_handle(event.data.id, handle) end, }) vim.api.nvim_create_autocmd({ 'User' }, { pattern = 'CodeCompanionRequestFinished', group = fidget_group, callback = function(event) local FidgetHelper = require 'utils.fidget_helper' local handle = FidgetHelper:pop_progress_handle(event.data.id) if handle then FidgetHelper:report_exit_status(handle, event) handle:finish() end end, }) vim.api.nvim_create_autocmd('BufEnter', { callback = function(event) local windows = vim.api.nvim_list_wins() for _, window in ipairs(windows) do local bufnr = vim.api.nvim_win_get_buf(window) local ft = vim.api.nvim_get_option_value('filetype', { buf = bufnr }) if vim.api.nvim_get_option_value('buflisted', { buf = bufnr }) or ft == 'oil' or ft == 'snacks_dashboard' then return end end vim.cmd 'qa' end, }) local modes_group = vim.api.nvim_create_augroup('modes', { clear = true }) vim.api.nvim_create_autocmd('FocusLost', { group = modes_group, pattern = '*', command = 'call feedkeys("\\")', }) vim.api.nvim_create_autocmd('BufNewFile', { group = modes_group, pattern = '*', command = 'call feedkeys("i")', }) -- Reload LuaSnip snippets when saving files in the snippets directory local snippets_dir = vim.fn.stdpath 'config' .. '/lua/snippets' vim.api.nvim_create_autocmd('BufWritePost', { pattern = snippets_dir .. '/*.json', -- Adjust the path to match your snippets directory desc = 'Reload LuaSnip snippets on save', callback = function() require('luasnip.loaders.from_vscode').lazy_load { paths = { snippets_dir } } vim.notify('Snippets reloaded!', vim.log.levels.INFO) end, }) require('helpers').edit_cf('a', '/lua/autocmd.lua')