Files
config.nvim/lua/autocommands.lua
T

73 lines
1.6 KiB
Lua

local augroup = vim.api.nvim_create_augroup("UserConfig", {})
-- Highlight yanked text
vim.api.nvim_create_autocmd("TextYankPost", {
group = augroup,
callback = function()
vim.highlight.on_yank()
end,
})
-- Return to last edit position when opening files
vim.api.nvim_create_autocmd("BufReadPost", {
group = augroup,
callback = function()
local mark = vim.api.nvim_buf_get_mark(0, '"')
local lcount = vim.api.nvim_buf_line_count(0)
local line = mark[1]
local ft = vim.bo.filetype
if line > 0 and line <= lcount
and vim.fn.index({ "commit", "gitrebase", "xxd" }, ft) == -1
and not vim.o.diff then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})
-- Auto-close terminal when process exits
vim.api.nvim_create_autocmd("TermClose", {
group = augroup,
callback = function()
if vim.v.event.status == 0 then
vim.api.nvim_buf_delete(0, {})
end
end,
})
-- Auto-resize splits when window is resized
vim.api.nvim_create_autocmd("VimResized", {
group = augroup,
callback = function()
vim.cmd("tabdo wincmd =")
end,
})
-- Create directories when saving files
vim.api.nvim_create_autocmd("BufWritePre", {
group = augroup,
callback = function()
local dir = vim.fn.expand('<afile>:p:h')
if vim.fn.isdirectory(dir) == 0 then
vim.fn.mkdir(dir, 'p')
end
end,
})
-- Folding config
vim.api.nvim_create_autocmd("FileType", {
callback = function()
if require("nvim-treesitter.parsers").has_parser() then
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
else
vim.opt.foldmethod = "syntax"
end
end,
})