-- Eryn Wells require "os" function gitTopLevelDirectory() local handle = io.popen("git rev-parse --show-toplevel") local gitRepoTopLevelDirectoryPath = vim.fn.trim(handle:read("*a")) handle:close() return gitRepoTopLevelDirectoryPath end local function _addPathToRuntimePath(path, options) if string.len(path) == 0 then return end if vim.fn.isdirectory(path) == 1 then if options.prepend then vim.opt.runtimepath:prepend(path) else vim.opt.runtimepath:append(path) end end end function addGitTopLevelDirectoryToRuntimePath() local gitTopLevelPath = gitTopLevelDirectory() if string.len(gitTopLevelPath) == 0 then return end local repoVimPath = gitTopLevelPath .. "/.vim" if vim.fn.isdirectory(repoVimPath) == 1 then vim.opt.runtimepath:prepend(repoVimPath) end local repoNvimPath = gitTopLevelPath .. "/.nvim" if vim.fn.isdirectory(repoNvimPath) == 1 then vim.opt.runtimepath:prepend(repoNvimPath) end local repoVimAfterPath = gitTopLevelPath .. "/.nvim/after" if vim.fn.isdirectory(repoVimAfterPath) == 1 then vim.opt.runtimepath:append(repoVimAfterPath) end local repoNvimAfterPath = gitTopLevelPath .. "/.vim/after" if vim.fn.isdirectory(repoNvimAfterPath) == 1 then vim.opt.runtimepath:append(repoNvimAfterPath) end end addGitTopLevelDirectoryToRuntimePath() vim.cmd [[ source ~/.vimrc.common source ~/.vim/plugins.vim ]] require "configuration" require "colors" require "keys" require "lsp" function ErynEnsureMetadataDirectoriesExist() local paths = { vim.opt.backupdir:get(), vim.opt.directory:get(), vim.opt.undodir:get(), } local function makeDirectory(path) os.execute("mkdir -p " .. path) end for _, opt in ipairs(paths) do for _, value in ipairs(opt) do if string.find(value, "//$") then makeDirectory(value) end end end -- The shadafile option is a single option but get() returns a table, so -- iterate it just to be safe. for _, opt in ipairs(vim.opt.shadafile:get()) do local shadaDirectory = vim.fs.dirname(opt) makeDirectory(shadaDirectory) end end ErynEnsureMetadataDirectoriesExist()