--useful stuff -- close nvim-tree if it's last buffer openvim.api.nvim_create_autocmd("BufEnter", { pattern = "*", callback = function() if #vim.api.nvim_list_bufs() == 1 and vim.bo.filetype == "NvimTree" then vim.cmd("quit") end end,}) -- auto-create missing dirs when saving a file--vim.api.nvim_create_autocmd("BufWritePre", {-- pattern = "*",-- callback = function()-- local dir = vim.fn.expand("<afile>:p:h")-- if vim.fn.isdirectory(dir) == 0 then-- vim.fn.mkdir(dir, "p")-- end--end,--}) -- linting when file is written tovim.api.nvim_create_autocmd("BufWritePost", { callback = function() -- try_lint without arguments runs the linters defined in `linters_by_ft` -- for the current filetype, on write require("lint").try_lint() end,}) -- spellcheck in mdvim.api.nvim_create_autocmd("FileType", { pattern = "markdown", command = "setlocal spell wrap",}) -- disable automatic comment on newlinevim.api.nvim_create_autocmd("FileType", { pattern = "*", callback = function() vim.opt_local.formatoptions:remove({ "c", "r", "o" }) end,}) -- highlight text on yankvim.api.nvim_create_autocmd("TextYankPost", { pattern = "*", callback = function() vim.highlight.on_yank({ timeout = 300 }) end,}) -- reload files on external change--vim.api.nvim_create_autocmd("FocusGained", {-- pattern = "*",-- command = "checktime",--}) -- restore cursor pos on file openvim.api.nvim_create_autocmd("BufReadPost", { pattern = "*", callback = function() local line = vim.fn.line("'\"") if line > 1 and line <= vim.fn.line("$") then vim.cmd("normal! g'\"") endend,}) vim.api.nvim_create_autocmd("VimEnter", { callback = function() local startuptime = vim.fn.reltimefloat(vim.fn.reltime(vim.g.start_time)) vim.g.startup_time_ms = string.format("%.2f ms", startuptime * 1000) end,}) vim.api.nvim_create_augroup("alpha_on_empty", { clear = true })vim.api.nvim_create_autocmd("User", { pattern = "BDeletePre *", group = "alpha_on_empty", callback = function() local bufnr = vim.api.nvim_get_current_buf() local name = vim.api.nvim_buf_get_name(bufnr) if name == "" then vim.cmd([[:Alpha | bd#]]) end end,}) vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "CmdlineLeave", "WinEnter" }, { pattern = "*", group = augroup, callback = function() if vim.o.nu and vim.api.nvim_get_mode().mode ~= "i" then vim.opt.relativenumber = true end end,}) vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "CmdlineEnter", "WinLeave" }, { pattern = "*", group = augroup, callback = function() if vim.o.nu then vim.opt.relativenumber = false -- Conditional taken from https://github.com/rockyzhang24/dotfiles/commit/03dd14b5d43f812661b88c4660c03d714132abcf -- Workaround for https://github.com/neovim/neovim/issues/32068 if not vim.tbl_contains({"@", "-"}, vim.v.event.cmdtype) then vim.cmd "redraw" end end end,})
--useful stuff
-- close nvim-tree if it's last buffer open
vim.api.nvim_create_autocmd("BufEnter", {
pattern = "*",
callback = function()
if #vim.api.nvim_list_bufs() == 1 and vim.bo.filetype == "NvimTree" then
vim.cmd("quit")
end
end,
})
-- auto-create missing dirs when saving a file
--vim.api.nvim_create_autocmd("BufWritePre", {
-- pattern = "*",
-- callback = function()
-- local dir = vim.fn.expand("<afile>:p:h")
-- if vim.fn.isdirectory(dir) == 0 then
-- vim.fn.mkdir(dir, "p")
-- end
--end,
--})
-- linting when file is written to
vim.api.nvim_create_autocmd("BufWritePost", {
callback = function()
-- try_lint without arguments runs the linters defined in `linters_by_ft`
-- for the current filetype, on write
require("lint").try_lint()
end,
})
-- spellcheck in md
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
command = "setlocal spell wrap",
})
-- disable automatic comment on newline
vim.api.nvim_create_autocmd("FileType", {
pattern = "*",
callback = function()
vim.opt_local.formatoptions:remove({ "c", "r", "o" })
end,
})
-- highlight text on yank
vim.api.nvim_create_autocmd("TextYankPost", {
pattern = "*",
callback = function()
vim.highlight.on_yank({ timeout = 300 })
end,
})
-- reload files on external change
--vim.api.nvim_create_autocmd("FocusGained", {
-- pattern = "*",
-- command = "checktime",
--})
-- restore cursor pos on file open
vim.api.nvim_create_autocmd("BufReadPost", {
pattern = "*",
callback = function()
local line = vim.fn.line("'\"")
if line > 1 and line <= vim.fn.line("$") then
vim.cmd("normal! g'\"")
end
end,
})
vim.api.nvim_create_autocmd("VimEnter", {
callback = function()
local startuptime = vim.fn.reltimefloat(vim.fn.reltime(vim.g.start_time))
vim.g.startup_time_ms = string.format("%.2f ms", startuptime * 1000)
end,
})
vim.api.nvim_create_augroup("alpha_on_empty", { clear = true })
vim.api.nvim_create_autocmd("User", {
pattern = "BDeletePre *",
group = "alpha_on_empty",
callback = function()
local bufnr = vim.api.nvim_get_current_buf()
local name = vim.api.nvim_buf_get_name(bufnr)
if name == "" then
vim.cmd([[:Alpha | bd#]])
end
end,
})
vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "CmdlineLeave", "WinEnter" }, {
pattern = "*",
group = augroup,
callback = function()
if vim.o.nu and vim.api.nvim_get_mode().mode ~= "i" then
vim.opt.relativenumber = true
end
end,
})
vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "CmdlineEnter", "WinLeave" }, {
pattern = "*",
group = augroup,
callback = function()
if vim.o.nu then
vim.opt.relativenumber = false
-- Conditional taken from https://github.com/rockyzhang24/dotfiles/commit/03dd14b5d43f812661b88c4660c03d714132abcf
-- Workaround for https://github.com/neovim/neovim/issues/32068
if not vim.tbl_contains({"@", "-"}, vim.v.event.cmdtype) then
vim.cmd "redraw"
end
end
end,
})