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.
78 lines
1.9 KiB
Lua
78 lines
1.9 KiB
Lua
local map, auto = core.misc.map, core.misc.auto
|
|
|
|
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()
|
|
treesitter.install { vim.bo[0].ft }
|
|
end)
|
|
end
|
|
},
|
|
|
|
{ "Wansmer/treesj",
|
|
disable = not vim.fn.has("nvim-0.9.0"),
|
|
reqs = "nvim-treesitter/nvim-treesitter",
|
|
lazy = function(load)
|
|
load:keymap("n", "<leader>j")
|
|
load:cmd("TSJToggle")
|
|
load:cmd("TSJSplit")
|
|
load:cmd("TSJJoin")
|
|
end,
|
|
load = function()
|
|
require("treesj").setup {
|
|
use_default_keymaps = false,
|
|
}
|
|
|
|
map("n", "<leader>j", require("treesj").toggle, { desc = "fold code" })
|
|
end
|
|
},
|
|
}
|