You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

116 lines
3.6 KiB

-- Use double backslashes
vim.api.nvim_set_hl(0, 'InvisibleChar', { bg = '#ff0000', fg = '#ffffff' })
vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'TextChanged', 'InsertLeave' }, {
group = vim.api.nvim_create_augroup('InvisibleChars', { clear = true }),
callback = function()
vim.fn.clearmatches()
vim.fn.matchadd('InvisibleChar', '\\%u2028\\|\\%u200b\\|\\%u200c\\|\\%u200d\\|\\%u2029\\|\\%ufeff')
end
})
vim.api.nvim_create_autocmd({ 'FileType' }, {
group = vim.api.nvim_create_augroup('TabWidth', { clear = true }),
pattern = "html,dart,vue,javascript,typescript,typescriptreact,json,markdown,css,sass",
callback = function()
vim.opt_local.tabstop = 2
vim.opt_local.softtabstop = 2
vim.opt_local.shiftwidth = 2
end,
})
vim.api.nvim_create_autocmd({ 'FileType' }, {
group = vim.api.nvim_create_augroup('DartCommentString', { clear = true }),
pattern = 'dart',
callback = function()
vim.bo.commentstring = '// %s'
end
})
vim.api.nvim_create_autocmd({ 'FileType' }, {
group = vim.api.nvim_create_augroup('PhpIndent', { clear = true }),
pattern = 'php',
callback = function()
vim.opt_local.smartindent = false
vim.opt_local.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
end
})
vim.api.nvim_create_autocmd({ 'BufWritePre' }, {
group = vim.api.nvim_create_augroup('RemoveTrailingWhitespace', { clear = true }),
command = [[%s/\s\+$//e]],
})
vim.api.nvim_create_autocmd({ 'BufRead', 'BufNewFile' }, {
group = vim.api.nvim_create_augroup('DockerExtensionFiletype', { clear = true }),
pattern = { '*.docker' },
callback = function()
vim.opt_local.syntax = 'dockerfile'
end
})
vim.api.nvim_create_autocmd({ 'BufReadPost' }, {
group = vim.api.nvim_create_augroup('LastCursorPosition', { clear = true }),
callback = function(event)
local exclude = { 'gitcommit', 'commit', 'gitrebase' }
local buf = event.buf
if
vim.tbl_contains(exclude, vim.bo[buf].filetype)
or vim.b[buf].last_loc
then
return
end
vim.b[buf].last_loc = true
local mark = vim.api.nvim_buf_get_mark(buf, '"')
local lcount = vim.api.nvim_buf_line_count(buf)
if mark[1] > 0 and mark[1] <= lcount then
pcall(vim.api.nvim_win_set_cursor, 0, mark)
end
end,
})
vim.api.nvim_create_autocmd({ 'TextYankPost' }, {
group = vim.api.nvim_create_augroup('YankHighlight', { clear = true }),
callback = function()
vim.hl.on_yank({ timeout = 250 })
end
})
vim.api.nvim_create_autocmd('BufWritePre', {
callback = function()
local dir = vim.fn.expand('<afile>:p:h')
if vim.fn.isdirectory(dir) == 0 then
vim.fn.mkdir(dir, 'p')
end
end,
})
-- Better indentation for PHP arrays
vim.api.nvim_create_autocmd('FileType', {
pattern = 'php',
callback = function()
vim.opt_local.indentkeys:remove('0#')
end,
})
-- Enable spell check for markdown and git commits
vim.api.nvim_create_autocmd('FileType', {
pattern = {'markdown', 'gitcommit'},
callback = function()
vim.opt_local.spell = true
vim.opt_local.spelllang = 'en_us'
end,
})
-- Auto-close unused buffers after 20 minutes
vim.api.nvim_create_autocmd('BufHidden', {
callback = function(event)
if vim.bo[event.buf].buftype == '' then
vim.defer_fn(function()
if vim.api.nvim_buf_is_valid(event.buf) and not vim.api.nvim_buf_is_loaded(event.buf) then
vim.api.nvim_buf_delete(event.buf, { force = false })
end
end, 1200000) -- 20 minutes
end
end,
})