snacks.nvim/lua/snacks/quickfile.lua
2024-12-10 13:55:51 +01:00

49 lines
1.1 KiB
Lua

---@private
---@class snacks.quickfile
local M = {}
M.meta = {
desc = "When doing `nvim somefile.txt`, it will render the file as quickly as possible, before loading your plugins.",
needs_setup = true,
}
---@class snacks.quickfile.Config
local defaults = {
-- any treesitter langs to exclude
exclude = { "latex" },
}
---@private
function M.setup()
local opts = Snacks.config.get("quickfile", defaults)
-- Skip if we already entered vim
if vim.v.vim_did_enter == 1 then
return
end
if vim.bo.filetype == "bigfile" then
return
end
local buf = vim.api.nvim_get_current_buf()
-- Try to guess the filetype (may change later on during Neovim startup)
local ft = vim.filetype.match({ buf = buf })
if ft then
-- Add treesitter highlights and fallback to syntax
local lang = vim.treesitter.language.get_lang(ft)
-- disable treesitter for some langs
if vim.tbl_contains(opts.exclude, lang) then
lang = nil
end
if not (lang and pcall(vim.treesitter.start, buf, lang)) then
vim.bo[buf].syntax = ft
end
-- Trigger early redraw
vim.cmd([[redraw]])
end
end
return M