nvim/lua/config/autocmds.lua

82 lines
2.3 KiB
Lua

-- 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.hl.on_yank()
end,
})
-- python specific
vim.api.nvim_create_autocmd("FileType", {
pattern = "python",
command = "setlocal shiftwidth=4 tabstop=4"
})
-- restore cursor to file position in previous editing session
vim.api.nvim_create_autocmd("BufReadPost", {
callback = function(args)
local mark = vim.api.nvim_buf_get_mark(args.buf, '"')
local line_count = vim.api.nvim_buf_line_count(args.buf)
if mark[1] > 0 and mark[1] <= line_count then
vim.api.nvim_win_set_cursor(0, mark)
-- defer centering slightly so it's applied after render
vim.schedule(function()
vim.cmd("normal! zz")
end)
end
end,
})
-- open help in vertical split
vim.api.nvim_create_autocmd("FileType", {
pattern = "help",
command = "wincmd L",
})
-- auto resize splits when the terminal's window is resized
vim.api.nvim_create_autocmd("VimResized", {
command = "wincmd =",
})
-- no auto continue comments on new line
vim.api.nvim_create_autocmd("FileType", {
group = vim.api.nvim_create_augroup("no_auto_comment", {}),
callback = function()
vim.opt_local.formatoptions:remove({ "c", "r", "o" })
end,
})
-- ide like highlight when stopping cursor
vim.api.nvim_create_autocmd("CursorMoved", {
group = vim.api.nvim_create_augroup("LspReferenceHighlight", { clear = true }),
desc = "Highlight references under cursor",
callback = function()
-- Only run if the cursor is not in insert mode
if vim.fn.mode() ~= "i" then
local clients = vim.lsp.get_clients({ bufnr = 0 })
local supports_highlight = false
for _, client in ipairs(clients) do
if client.server_capabilities.documentHighlightProvider then
supports_highlight = true
break -- Found a supporting client, no need to check others
end
end
-- 3. Proceed only if an LSP is active AND supports the feature
if supports_highlight then
vim.lsp.buf.clear_references()
vim.lsp.buf.document_highlight()
end
end
end,
})
-- ide like highlight when stopping cursor
vim.api.nvim_create_autocmd("CursorMovedI", {
group = "LspReferenceHighlight",
desc = "Clear highlights when entering insert mode",
callback = function()
vim.lsp.buf.clear_references()
end,
})