kickstart.nvim/lua/config/autocmds.lua

64 lines
2.2 KiB
Lua

-- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands`
-- Highlight when yanking (copying) text
-- Try it with `yap` in normal mode
-- See `:help vim.hl.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.hl.on_yank({ higroup = 'IncSearch', timeout = 300 })
end,
})
-- Ensure focus starts in the editor, not file tree
vim.api.nvim_create_autocmd('VimEnter', {
desc = 'Focus editor window on startup, not Neo-tree',
group = vim.api.nvim_create_augroup('kickstart-focus-editor', { clear = true }),
callback = function()
-- Wait a bit for plugins to load, then focus first non-special buffer
vim.defer_fn(function()
-- Find the first normal buffer window
for _, win in ipairs(vim.api.nvim_list_wins()) do
local buf = vim.api.nvim_win_get_buf(win)
local buftype = vim.api.nvim_buf_get_option(buf, 'buftype')
local filetype = vim.api.nvim_buf_get_option(buf, 'filetype')
-- Skip special buffers like neo-tree, terminal, etc.
if buftype == '' and filetype ~= 'neo-tree' then
vim.api.nvim_set_current_win(win)
break
end
end
end, 50) -- 50ms delay to let plugins initialize
end,
})
-- Ensure virtual text diagnostics are enabled after all plugins load
-- This needs to be set after plugins that might override diagnostic config
vim.api.nvim_create_autocmd('User', {
pattern = 'VeryLazy',
once = true,
callback = function()
vim.diagnostic.config {
virtual_text = {
spacing = 4,
source = 'if_many',
prefix = '',
format = function(diagnostic)
return diagnostic.message
end,
},
}
end,
})
-- Command to restart Python LSP (useful when switching projects/venvs)
vim.api.nvim_create_user_command('PythonRestart', function()
local clients = vim.lsp.get_clients { name = 'pyright' }
for _, client in ipairs(clients) do
vim.lsp.stop_client(client.id, true)
end
vim.notify('Pyright stopped. It will restart on next edit.', vim.log.levels.INFO)
end, { desc = 'Restart Python LSP (pyright)' })