Compare commits

...
Sign in to create a new pull request.

1 commit

Author SHA1 Message Date
f095d0cbf5
my attempt to use the treesitter rewrite
it'd be nice to use this but it forces me to chase the cli util which isn't
reasonable whatsoever, additionally:
- It can't seem to check if something is installed before attempting to
  reinstall it
- It won't shut the fuck up with all it's messages even though it's not
  even supposed to show messages by default

I'm sure the codebase is less of a mess but the ergonomics from a user
standpoint is absolutely worse.
2025-12-17 22:15:45 -05:00

View file

@ -1,58 +1,59 @@
local map = core.misc.map
local map, auto = core.misc.map, core.misc.auto
return {
{ "nvim-treesitter/nvim-treesitter",
config = function()
vim.cmd("TSUpdate")
end,
load = function()
require("nvim-treesitter.configs").setup {
-- good default parsers
ensure_installed = { "c", "lua", "vim", "vimdoc", "markdown",
"markdown_inline", "java", "bash", "css", "html", "luadoc",
"make", "zig"
},
-- indentation
indent = {
enable = true,
disable = function(lang, _)
-- disable indenting in php (it's more broken with than without)
return table.contains(({
"php"
}), lang)
end
},
-- enable highlighting
highlight = {
enable = true,
-- use vim highlighting in addition to treesitter
additional_vim_regex_highlighting = true,
disable = function(lang, buf)
-- disable in some files where vim's builtin highlighting is better
if table.contains(({
"diff", "tex"
}), lang) then
return true
local function highlight(buf)
local lang = vim.bo[buf].ft
if table.contains({ "diff", "tex" }, lang) then
return false
end
-- disable in big files
local ok, stats = pcall(vim.uv.fs_stat,
vim.api.nvim_buf_get_name(buf))
if ok and stats and stats.size > (1024 * 100 * 10) --[[1MB]] then
return false
end
return true
end
local function indent(buf)
local lang = vim.bo[buf].ft
-- disable indenting in php (it's more broken with than without)
return not table.contains({ "php" }, lang)
end
}
}
return {
{ "nvim-treesitter/nvim-treesitter",
branch = "main",
config = function()
vim.cmd("TSUpdate")
end,
load = function()
local treesitter = require("nvim-treesitter")
treesitter.setup {}
treesitter.install({
"c", "lua", "vim", "vimdoc", "markdown",
"markdown_inline", "java", "bash", "css", "html", "luadoc",
"make", "zig"
}, {
force = false,
summary = false,
})
auto("FileType", {
callback = function(ev)
if highlight(ev.buf) then
pcall(vim.treesitter.start)
vim.bo[ev.buf].syntax = "ON"
end
if indent(ev.buf) then
vim.bo[ev.buf].indentexpr = "v:lua.require('nvim-treesitter').indentexpr()"
end
end,
})
core.misc.map("n", "<leader><leader>t", function()
pcall(vim.cmd.TSInstall, vim.api.nvim_get_option_value("ft", {
buf = vim.api.nvim_get_current_buf()
}))
treesitter.install { vim.bo[0].ft }
end)
end
},