From 4727b38cfeb30ac72635a9854a26ef13bc63592b Mon Sep 17 00:00:00 2001 From: Robert Günzler Date: Wed, 17 Aug 2022 15:27:37 +0200 Subject: vim: move custom exrc loading into module --- .vim/lua/exrc.lua | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .vim/lua/exrc.lua (limited to '.vim/lua') diff --git a/.vim/lua/exrc.lua b/.vim/lua/exrc.lua new file mode 100644 index 0000000..6b7742b --- /dev/null +++ b/.vim/lua/exrc.lua @@ -0,0 +1,49 @@ +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.notify('[exrc] loaded') + 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 -- cgit 1.4.1