mirror of
https://github.com/cap153/nvim.git
synced 2026-04-20 12:15:34 +08:00
first commit
This commit is contained in:
commit
3b19a9c8a8
29 changed files with 2428 additions and 0 deletions
53
lua/pack/configs/treesitter.lua
Normal file
53
lua/pack/configs/treesitter.lua
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
if vim.g.vscode then return end
|
||||
|
||||
local P = {
|
||||
name = "nvim-treesitter",
|
||||
module = "nvim-treesitter",
|
||||
build_cmd = ":TSUpdate",
|
||||
}
|
||||
|
||||
PackUtils.setup_listener(P.name, P.build_cmd)
|
||||
|
||||
local ensure_installed = {
|
||||
"json",
|
||||
"rust",
|
||||
"python",
|
||||
"lua",
|
||||
"markdown",
|
||||
"bash",
|
||||
"java",
|
||||
}
|
||||
|
||||
-- 在 FileType 确定时,检查、安装并启动
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
group = vim.api.nvim_create_augroup("NativeTreesitter", { clear = true }),
|
||||
callback = function(args)
|
||||
local buf = args.buf
|
||||
local ft = vim.bo[buf].filetype
|
||||
-- 过滤无效 buffer, 终端, 以及 yazi
|
||||
if ft == "" or ft == "yazi" or vim.bo[buf].buftype ~= "" then return end
|
||||
-- 过滤大型文件 (大于 100KB 不开启 Treesitter,防止卡顿)
|
||||
local max_filesize = 100 * 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 return end
|
||||
-- 获取标准化的 Parser 名称
|
||||
local lang = vim.treesitter.language.get_lang(ft) or ft
|
||||
-- 检查该语言是否在我们的配置列表中
|
||||
if vim.tbl_contains(ensure_installed, lang) then
|
||||
local no_err, is_added = pcall(vim.treesitter.language.add, lang)
|
||||
if not no_err or not is_added then
|
||||
-- 只有在需要安装时,才把 nvim-treesitter 插件加载进内存
|
||||
PackUtils.load(P, function() end)
|
||||
vim.notify("🌱 Installing " .. lang .. " parser...", vim.log.levels.INFO)
|
||||
local ts = require("nvim-treesitter")
|
||||
if ts.install then
|
||||
ts.install({ lang }):wait(60000)
|
||||
else
|
||||
vim.cmd("TSInstall " .. lang)
|
||||
end
|
||||
end
|
||||
-- 万事俱备,启动高亮
|
||||
pcall(vim.treesitter.start, buf, lang)
|
||||
end
|
||||
end,
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue