local NukeVim = {} function NukeVim:new(obj) obj = obj or {} setmetatable(obj, self) self.__index = self return obj end function NukeVim:enableCaching() self.lua_cache = require('impatient/impatient') end function NukeVim:enableProfiling() self.lua_cache.enable_profile() end function NukeVim:initialize() -- init dependencies self.config = require('_config') self.modules = require('modules'):new() -- load modules based on config for module, config in pairs(self.config) do if (config.enable == nil or config.enable == true) then self.modules:add(module, config) end end -- Start up modules self.modules:configure() self.modules:call('initialize') self.modules:call('register') self.modules:call('commit') self.modules:call('boot') end function NukeVim:run() self.modules:call('run') end function NukeVim:gui() self.modules:call('gui') end function NukeVim:install() self.modules:call('install') vim.cmd(':helptags ~/.config/nvim/doc/') end function NukeVim:help() vim.cmd(':h nukevim') end return NukeVim