nvim/lua/autocmds.lua

81 lines
2.6 KiB
Lua

-- Non-plugin autocommands (minimal placeholder for bootstrap)
local aug = vim.api.nvim_create_augroup('UserDefaults', { clear = true })
-- Phase 10.3: Templates (auto-populate new files from templates)
local template_aug = vim.api.nvim_create_augroup('Templates', { clear = true })
vim.api.nvim_create_autocmd("BufNewFile", {
group = template_aug,
pattern = "*.sh",
callback = function()
-- Read template at top of file, then move to end
vim.cmd('0read ~/.config/nvim/templates/template.sh')
vim.cmd('normal! G')
end,
})
-- Phase 9.4: Per-filetype indentation settings to match formatters
-- PHP: WordPress coding standards (tabs, displayed as 2 spaces)
vim.api.nvim_create_autocmd("FileType", {
group = aug,
pattern = "php",
callback = function()
vim.opt_local.expandtab = false -- Use actual tabs (WordPress standard)
vim.opt_local.tabstop = 2 -- Display tabs as 2 spaces wide
vim.opt_local.shiftwidth = 2 -- Indent/outdent by 2 columns (one tab)
vim.opt_local.softtabstop = 2 -- Tab key inserts 2 columns (one tab)
end,
})
-- JavaScript, TypeScript, JSON, CSS: Prettier defaults (2 spaces)
vim.api.nvim_create_autocmd("FileType", {
group = aug,
pattern = { "javascript", "javascriptreact", "typescript", "typescriptreact", "json", "css", "scss", "html" },
callback = function()
vim.opt_local.expandtab = true -- Use spaces (Prettier default)
vim.opt_local.tabstop = 2 -- Display as 2 spaces
vim.opt_local.shiftwidth = 2 -- Indent by 2
vim.opt_local.softtabstop = 2
end,
})
-- Lua: stylua defaults (2 spaces)
vim.api.nvim_create_autocmd("FileType", {
group = aug,
pattern = "lua",
callback = function()
vim.opt_local.expandtab = true -- Use spaces (common for Lua configs)
vim.opt_local.tabstop = 2 -- Display as 2 spaces
vim.opt_local.shiftwidth = 2 -- Indent by 2
vim.opt_local.softtabstop = 2
end,
})
-- Markdown: Prettier defaults (2 spaces)
vim.api.nvim_create_autocmd("FileType", {
group = aug,
pattern = "markdown",
callback = function()
vim.opt_local.expandtab = true -- Use spaces
vim.opt_local.tabstop = 2 -- Display as 2 spaces
vim.opt_local.shiftwidth = 2 -- Indent by 2
vim.opt_local.softtabstop = 2
end,
})
-- Python: Black defaults (4 spaces)
vim.api.nvim_create_autocmd("FileType", {
group = aug,
pattern = "python",
callback = function()
vim.opt_local.expandtab = true -- Use spaces (PEP 8)
vim.opt_local.tabstop = 4 -- Display as 4 spaces
vim.opt_local.shiftwidth = 4 -- Indent by 4
vim.opt_local.softtabstop = 4
end,
})
return {}