local function setup_treesitter()
	local treesitter = require("nvim-treesitter")
	treesitter.setup({})

	local ensure_installed = {
		"vim",
		"vimdoc",
		"rust",
		"c",
		"cpp",
		"go",
		"html",
		"css",
		"javascript",
		"json",
		"lua",
		"markdown",
		"python",
		"typescript",
		"vue",
		"svelte",
		"bash",
	}

	local config = require("nvim-treesitter.config")
	local installed = config.get_installed()
	local missing = {}

	for _, parser in ipairs(ensure_installed) do
		if not vim.tbl_contains(installed, parser) then
			table.insert(missing, parser)
		end
	end

	if #missing > 0 then
		treesitter.install(missing)
	end

	local group = vim.api.nvim_create_augroup("TreeSitterConfig", { clear = true })
	vim.api.nvim_create_autocmd("FileType", {
		group = group,
		callback = function(args)
			local lang = vim.treesitter.language.get_lang(args.match)
			if vim.list_contains(treesitter.get_installed(), lang) then
				vim.treesitter.start(args.buf)
			end
		end,
	})
end

setup_treesitter()

require("mason").setup({})

vim.g.UltiSnipsEditSplit = "vertical"
vim.g.UltiSnipsExpandTrigger = "<tab>"
vim.g.UltiSnipsJumpForwardTrigger = "<C-i>"
vim.g.UltiSnipsJumpBackwardTrigger = "<C-u>"

vim.g.vimtex_view_method = "zathura"
vim.g.vimtex_compiler_method = "latexmk"
vim.g.vimtex_compiler_progname = "nvr"
vim.g.vimtex_view_skim_active = 0
vim.g.vimtex_quickfix_mode = 0
vim.o.conceallevel = 0
vim.g.tex_conceal = "abdmg"
