From 978ff7c24de968d5f2f956b72a196773ae80b903 Mon Sep 17 00:00:00 2001 From: LostNeophyte Date: Tue, 1 Nov 2022 10:37:50 +0100 Subject: perf(treesitter): disable in big files (#3268) * perf(treesitter): disable in big files * fix: disable `use_treesitter` in indentlines and remove vim.schedule * refactor(treesitter): use `vim.schedule` * perf: set nocursorline in big json files * perf: disable more things in big files * chore: format --- lua/lvim/core/treesitter.lua | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'lua/lvim/core/treesitter.lua') diff --git a/lua/lvim/core/treesitter.lua b/lua/lvim/core/treesitter.lua index fcada24f..9b50986e 100644 --- a/lua/lvim/core/treesitter.lua +++ b/lua/lvim/core/treesitter.lua @@ -13,7 +13,44 @@ M.config = function() highlight = { enable = true, -- false will disable the whole extension additional_vim_regex_highlighting = false, - disable = { "latex" }, + disable = function(lang, buf) + if vim.tbl_contains({ "latex" }, lang) then + return true + end + + local max_filesize = 1024 * 1024 + local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf)) + if ok and stats and stats.size > max_filesize then + if lvim.builtin.illuminate.active then + pcall(require("illuminate").pause_buf) + end + + vim.schedule(function() + vim.api.nvim_buf_call(buf, function() + vim.cmd "setlocal noswapfile noundofile" + + if vim.tbl_contains({ "json" }, lang) then + vim.cmd "NoMatchParen" + vim.cmd "syntax off" + vim.cmd "syntax clear" + vim.cmd "setlocal nocursorline nolist bufhidden=unload" + + vim.api.nvim_create_autocmd({ "BufDelete" }, { + callback = function() + vim.cmd "DoMatchParen" + vim.cmd "syntax on" + end, + buffer = buf, + }) + end + end) + end) + + Log:info "File larger than 1MB, turned off treesitter for this buffer" + + return true + end + end, }, context_commentstring = { enable = true, -- cgit v1.2.3