|
1 | 1 | local M = {} |
2 | 2 |
|
3 | | -local ts_configs = require("nvim-treesitter.configs") |
4 | | -local ts_parsers = require("nvim-treesitter.parsers") |
| 3 | +local nvim_treesitter_parsers = require("nvim-treesitter.parsers") |
| 4 | + |
| 5 | +local function get_languages() |
| 6 | + local parser_files = vim.api.nvim_get_runtime_file("parser/*", true) |
| 7 | + |
| 8 | + local installed_languages = {} |
| 9 | + for _, path in ipairs(parser_files) do |
| 10 | + -- Match the filename between the last slash and the dot (e.g., 'lua') |
| 11 | + local lang = path:match("([^/]+)%.%w+$") |
| 12 | + if lang then |
| 13 | + table.insert(installed_languages, lang) |
| 14 | + end |
| 15 | + end |
| 16 | + |
| 17 | + return installed_languages |
| 18 | +end |
| 19 | + |
5 | 20 | function M.setup() |
6 | | - ts_configs.setup({ |
7 | | - highlight = { |
8 | | - enable = true, |
9 | | - }, |
10 | | - incremental_selection = { |
11 | | - enable = true, |
12 | | - keymaps = { |
13 | | - init_selection = "gnn", |
14 | | - node_incremental = "grn", |
15 | | - scope_incremental = "grc", |
16 | | - node_decremental = "grm", |
17 | | - }, |
18 | | - }, |
| 21 | + local languages = get_languages() |
| 22 | + vim.api.nvim_create_autocmd("FileType", { |
| 23 | + pattern = languages, |
| 24 | + callback = function() |
| 25 | + vim.treesitter.start() |
| 26 | + vim.wo[0][0].foldexpr = "v:lua.vim.treesitter.foldexpr()" |
| 27 | + vim.wo[0][0].foldmethod = "expr" |
| 28 | + end, |
19 | 29 | }) |
20 | 30 |
|
21 | 31 | -- Add grammar for Typst. |
22 | | - local parser_configs = ts_parsers.get_parser_configs() |
23 | | - parser_configs.typst = { |
| 32 | + nvim_treesitter_parsers.typst = { |
24 | 33 | install_info = { |
25 | | - url = "https://github.com/uben0/tree-sitter-typst", |
26 | | - files = { "src/parser.c", "src/scanner.c" }, |
27 | | - generate_requires_npm = false, |
28 | | - requires_generate_from_grammar = false, |
| 34 | + url = "https://github.com/uben0/tree-sitter-typst/", |
| 35 | + revision = "46cf4ded12ee974a70bf8457263b67ad7ee0379d", |
29 | 36 | }, |
| 37 | + tier = 2, |
30 | 38 | } |
31 | 39 | vim.treesitter.language.register("typst", "typst") |
32 | 40 | end |
|
0 commit comments