autocmd.lua 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. -- apply default terminal settings
  2. vim.api.nvim_create_autocmd('TermOpen', {
  3. callback = function()
  4. vim.bo.scrollback = 10000
  5. vim.opt_local.number = false
  6. vim.opt_local.relativenumber = false
  7. end
  8. })
  9. -- preserve window structure when exiting terminal via C-d
  10. vim.api.nvim_create_autocmd('TermClose', {
  11. callback = function(opts)
  12. MiniBufremove.delete(opts.buf)
  13. end,
  14. -- needed so statusline properly updates
  15. nested = true,
  16. })
  17. -- automatically enter/leave terminal mode
  18. vim.api.nvim_create_autocmd('TermOpen', { command = 'startinsert' })
  19. vim.api.nvim_create_autocmd({'WinEnter','BufWinEnter'}, {
  20. pattern = 'term://*',
  21. command = 'startinsert',
  22. })
  23. vim.api.nvim_create_autocmd('BufLeave', {
  24. pattern = 'term://*',
  25. command = 'stopinsert',
  26. })
  27. -- strip trailing whitespace
  28. vim.api.nvim_create_autocmd('BufWritePre', { command = '%s/\\s\\+$//e' })
  29. -- filetype specific options
  30. vim.api.nvim_create_autocmd('FileType', {
  31. pattern = 'markdown',
  32. callback = function()
  33. vim.bo.textwidth = 80
  34. end,
  35. })
  36. vim.api.nvim_create_autocmd('FileType', {
  37. pattern = 'typescript',
  38. callback = function()
  39. -- disable default indentation as it's pretty broken for jsdoc
  40. vim.opt_local.indentexpr = nil
  41. vim.opt_local.formatexpr = nil
  42. end,
  43. })