64 lines
2.2 KiB
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)' })
|