+local M = {
+ ui = require("rmz.util.ui"),
+ lazy = require("rmz.util.lazy"),
+ lsp = require("rmz.util.lsp"),
+}
+
+--- Deduplicates a list.
+---@generic T
+---@param list T[]
+---@return T[]
+function M.dedup(list)
+ local ret = {}
+ local seen = {}
+ for _, v in ipairs(list) do
+ if not seen[v] then
+ table.insert(ret, v)
+ seen[v] = true
+ end
+ end
+ return ret
+end
+
+function M.foldexpr()
+ local buf = vim.api.nvim_get_current_buf()
+ if vim.b[buf].ts_folds == nil then
+ -- as long as we don't have a filetype, don't bother
+ -- checking if treesitter is available (it won't)
+ if vim.bo[buf].filetype == "" then
+ return "0"
+ end
+ if vim.bo[buf].filetype:find("dashboard") then
+ vim.b[buf].ts_folds = false
+ else
+ vim.b[buf].ts_folds = pcall(vim.treesitter.get_parser, buf)
+ end
+ end
+ return vim.b[buf].ts_folds and vim.treesitter.foldexpr() or "0"
+end