summaryrefslogtreecommitdiff
path: root/lua/plugin-loader.lua
diff options
context:
space:
mode:
authorLuc Sinet <[email protected]>2021-07-18 20:08:14 +0200
committerGitHub <[email protected]>2021-07-18 18:08:14 +0000
commit6f9c521e227b1c4d3741cb73ee0a9598be73ef10 (patch)
treed98676a19a41ba7c3d989b6b3d6cd8a42104809f /lua/plugin-loader.lua
parent56f17cebd4520e37c4c8a96e96e008bb5870178b (diff)
Split plugin loading logic from the configuration (#796)
Diffstat (limited to 'lua/plugin-loader.lua')
-rw-r--r--lua/plugin-loader.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/lua/plugin-loader.lua b/lua/plugin-loader.lua
new file mode 100644
index 00000000..25a41111
--- /dev/null
+++ b/lua/plugin-loader.lua
@@ -0,0 +1,46 @@
+local plugin_loader = {}
+
+function plugin_loader:init()
+ local execute = vim.api.nvim_command
+ local fn = vim.fn
+
+ local install_path = fn.stdpath "data" .. "/site/pack/packer/start/packer.nvim"
+ if fn.empty(fn.glob(install_path)) > 0 then
+ execute("!git clone https://github.com/wbthomason/packer.nvim " .. install_path)
+ execute "packadd packer.nvim"
+ end
+
+ local packer_ok, packer = pcall(require, "packer")
+ if not packer_ok then
+ return
+ end
+
+ packer.init {
+ -- package_root = require("packer.util").join_paths(vim.fn.stdpath "data", "lvim", "pack"),
+ git = { clone_timeout = 300 },
+ display = {
+ open_fn = function()
+ return require("packer.util").float { border = "single" }
+ end,
+ },
+ }
+
+ self.packer = packer
+ return self
+end
+
+function plugin_loader:load(configurations)
+ return self.packer.startup(function(use)
+ for _, plugins in ipairs(configurations) do
+ for _, plugin in ipairs(plugins) do
+ use(plugin)
+ end
+ end
+ end)
+end
+
+return {
+ init = function()
+ return plugin_loader:init()
+ end,
+}