summaryrefslogtreecommitdiff
path: root/lua/lvim/core/treesitter.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lvim/core/treesitter.lua')
-rw-r--r--lua/lvim/core/treesitter.lua39
1 files changed, 38 insertions, 1 deletions
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,