vim.opt.runtimepath:append(vim.env.NVIM_PLENARY) vim.opt.runtimepath:append(vim.env.NVIM_TREESITTER) vim.opt.runtimepath:append(vim.env.NVIM_TREESITTER_TEXTOBJECTS) vim.opt.runtimepath:append(vim.env.NVIM_TREESITTER_PARSER) vim.cmd.runtime({ "plugin/plenary.vim", bang = true }) vim.cmd.runtime({ "plugin/nvim-treesitter.lua", bang = true }) vim.cmd.runtime({ "plugin/nvim-treesitter-textobjects.lua", bang = true }) local Path = require("plenary.path") local project_root = Path:new(".") -- FIXME: relies on current working directory vim.filetype.add({ extension = { bp = "bp", }, }) vim.o.swapfile = false vim.bo.swapfile = false local parser_config = require("nvim-treesitter.parsers").get_parser_configs() parser_config.bp = { install_info = { url = project_root.filename, files = {"src/parser.c"}, }, } require("nvim-treesitter.configs").setup({ indent = { enable = true }, highlight = { enable = true }, }) -- Add queries, overriding potential `nvim-treesitter`-provided ones local scan_dir = require("plenary.scandir").scan_dir local queries_dir = project_root / "queries" for _, name in ipairs(scan_dir(queries_dir.filename)) do local content = Path:new(name):read() local basename = name:gsub(".*/", "") vim.treesitter.query.set("bp", basename:gsub(".scm$", ""), content) end