Files
dotfiles/nvim/lua/config/autocmds.lua
2025-05-09 15:16:20 +08:00

164 lines
4.1 KiB
Lua

-- Autocmds are automatically loaded on the VeryLazy event
-- Default autocmds that are always set: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/config/autocmds.lua
--
-- Add any additional autocmds here
-- with `vim.api.nvim_create_autocmd`
--
-- Or remove existing autocmds by their group name (which is prefixed with `lazyvim_` for the defaults)
-- e.g. vim.api.nvim_del_augroup_by_name("lazyvim_wrap_spell")
vim.cmd('filetype plugin indent on')
-- Create a group for our autocommands
local augroup = vim.api.nvim_create_augroup("CustomSettings", { clear = true })
-- FileType autocommands
vim.api.nvim_create_autocmd("FileType", {
pattern = "python",
group = augroup,
callback = function()
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.softtabstop = 4
vim.opt_local.textwidth = 120
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "go",
group = augroup,
callback = function()
vim.opt_local.tabstop = 4
vim.opt_local.shiftwidth = 4
vim.opt_local.softtabstop = 4
vim.opt_local.textwidth = 120
vim.opt_local.expandtab = false
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "json", "jsonnet" },
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.expandtab = true
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "yaml",
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 0
vim.opt_local.expandtab = true
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "gotmpl",
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 0
vim.opt_local.expandtab = true
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "php",
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 120
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "html", "htmldjango", "xhtml", "haml" },
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 0
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "ruby",
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 120
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "less", "sass", "scss", "css" },
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 120
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = { "javascript", "javascript.jsx", "javascriptreact", "typescript", "typescriptreact" },
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.expandtab = true
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "NvimTree",
group = augroup,
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.shiftwidth = 2
vim.opt_local.softtabstop = 2
vim.opt_local.textwidth = 0
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "make",
group = augroup,
callback = function()
vim.opt_local.expandtab = false
vim.opt_local.shiftwidth = 8
vim.opt_local.softtabstop = 0
end,
})
-- File pattern autocommands
vim.api.nvim_create_autocmd({ "BufNewFile", "BufRead" }, {
pattern = "*.proto",
group = augroup,
command = "setfiletype proto",
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "proto",
group = augroup,
callback = function()
vim.opt_local.shiftwidth = 2
vim.opt_local.expandtab = true
end,
})