X-Git-Url: https://git.rmz.io/dotfiles.git/blobdiff_plain/5dddfb6083d40ebdb8ac75dc9008b7d469df3415..9d8f4bf3dcc34ae97a8e2588f49117e5612dee2c:/nvim/lua/rmz/util/init.lua diff --git a/nvim/lua/rmz/util/init.lua b/nvim/lua/rmz/util/init.lua index 7afa985..abf0c21 100644 --- a/nvim/lua/rmz/util/init.lua +++ b/nvim/lua/rmz/util/init.lua @@ -1,4 +1,41 @@ ---@class rmz.util -local M = {} +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 return M