]> git.rmz.io Git - dotfiles.git/blob - nvim/lua/rmz/util/init.lua
lazyvim: foldexpr using treesitter if available
[dotfiles.git] / nvim / lua / rmz / util / init.lua
1 ---@class rmz.util
2 local M = {
3 ui = require("rmz.util.ui"),
4 lazy = require("rmz.util.lazy"),
5 lsp = require("rmz.util.lsp"),
6 }
7
8 --- Deduplicates a list.
9 ---@generic T
10 ---@param list T[]
11 ---@return T[]
12 function M.dedup(list)
13 local ret = {}
14 local seen = {}
15 for _, v in ipairs(list) do
16 if not seen[v] then
17 table.insert(ret, v)
18 seen[v] = true
19 end
20 end
21 return ret
22 end
23
24 function M.foldexpr()
25 local buf = vim.api.nvim_get_current_buf()
26 if vim.b[buf].ts_folds == nil then
27 -- as long as we don't have a filetype, don't bother
28 -- checking if treesitter is available (it won't)
29 if vim.bo[buf].filetype == "" then
30 return "0"
31 end
32 if vim.bo[buf].filetype:find("dashboard") then
33 vim.b[buf].ts_folds = false
34 else
35 vim.b[buf].ts_folds = pcall(vim.treesitter.get_parser, buf)
36 end
37 end
38 return vim.b[buf].ts_folds and vim.treesitter.foldexpr() or "0"
39 end
40
41 return M