- Install plugins easily
- Configuration in a
.jsonc
file - Sane defaults for plugins
- Automatically set up plugins by only giving a repo address
- Automatically detect "dead" plugins
- Easy lazy loading
Put the following code in your config to bootstrap plugnplay:
local plugnplay_path = vim.fn.stdpath("data") .. "/site/pack/plugnplay/opt/plugnplay.nvim"
if vim.fn.empty(vim.fn.glob(plugnplay_path)) > 0 then
vim.notify("Bootstrapping plugnplay.nvim, please wait ...")
vim.fn.system({
"git",
"clone",
"https://github.com/nvim-plugnplay/plugnplay.nvim",
plugnplay_path,
})
end
-- Load plugnplay
vim.cmd([[ packadd plugnplay.nvim ]])
local plugnplay = require("plugnplay")
You configure plugins in the cfg.jsonc
file.
The structure of a config is like this:
{
"plugnplay": {
// Configuration for plugnplay goes here
},
// Plugins we want to auto-configure
"auto-config": [
"neorg",
"something-else"
],
// Similar to "auto-config" except we actually need to supply our own configuration
"plugins": {
{
"meta": {
"version": "0.1.0",
"authors": ["Shift"],
"description": "Config powered with plugnplay.nvim",
},
"options": {
"pnp-version": "0.1.0", // Last compatible pnp version
// here goes some pnp config
},
"dependencies": {
"neorg": {
"github": "nvim-neorg/neorg",
"branch": "unstable",
"config": "config.neorg",
},
"mappy": {
"path": "~/.code/lua/mappy",
"config": "general.maps",
}
}
}
},
// For entries that are not present in our database
"custom": {
"something": "a/url", // The value can be simply a string
"something": { // Or it can be a table
"url": "a/url", // The URL value must be supplied
"configuration": { // A configuration table is optional
"key": "value"
}
}
}
}
You should create a plugin.json
file in your repositories.
See for more info.