local root_pattern = require('lspconfig.util').root_pattern local M = { config = { filenames = {'.nvimrc'} } } M.setup = function (opt) vim.validate { filenames = { opt.filenames, 'table', true }, } M.config = vim.tbl_extend('force', M.config, opt) local group = vim.api.nvim_create_augroup('ExrcLoad', { clear = true }) vim.api.nvim_create_autocmd('VimEnter', { callback = M.load, group = group, }) end local load = function (root, filename) local fpath = root .. '/' .. filename if root and vim.loop.fs_stat(fpath) then vim.cmd('luafile ' .. fpath) vim.g.nvimrc_loaded = fpath else error(string.format('[exrc] %s not found', fpath)) end end M.load = function () local root = vim.fn.getcwd() for _, fname in ipairs(M.config.filenames) do local ok = false ok, _ = pcall(load, root, fname) if ok then return true end -- try harder by searching up the dir tree root = root_pattern(fname)(root) ok, _ = pcall(load, root, fname) if ok then return true end end return false end return M