Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shortcuts/neovim-plugin-boilerplate
🔌 Plug and play Neovim plugin boilerplate with pre-configured CI, CD, linter, docs and tests.
https://github.com/shortcuts/neovim-plugin-boilerplate
boilerplate lua neovim neovim-plugin nvim plugin template
Last synced: about 2 months ago
JSON representation
🔌 Plug and play Neovim plugin boilerplate with pre-configured CI, CD, linter, docs and tests.
- Host: GitHub
- URL: https://github.com/shortcuts/neovim-plugin-boilerplate
- Owner: shortcuts
- License: mit
- Created: 2022-12-29T20:04:16.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-05-18T20:20:58.000Z (4 months ago)
- Last Synced: 2024-05-18T21:27:41.002Z (4 months ago)
- Topics: boilerplate, lua, neovim, neovim-plugin, nvim, plugin, template
- Language: Lua
- Homepage:
- Size: 46.9 KB
- Stars: 155
- Watchers: 5
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
🔌 Neovim plugin boilerplate
Plug and play Neovim plugin boilerplate with pre-configured CI, CD, linter, docs and tests.## ⚡️ Features
- interactive `setup` script
- README.md template
- Perfect for open-source:
- CODEOWNERS file for PR auto-assign
- Issues and PR templates
- CD leveraging [release-please-action](https://github.com/google-github-actions/release-please-action)
- CI:
- Test running on multiple Neovim version
- Lint check
- Documentation generation check
- Minimal run time, ideal for free plans
- Docs with [mini.nvim `doc` plugin](https://github.com/echasnovski/mini.nvim/blob/main/lua/mini/doc.lua)
- Tests with [mini.nvim `test` plugin](https://github.com/echasnovski/mini.nvim/blob/main/lua/mini/test.lua)
- Versioned testing with [`bob`](https://github.com/MordechaiHadad/bob)
- Linting with [Stylua](https://github.com/JohnnyMorganz/StyLua)
- LuaLS checks on CI (inspired by [lukas-reineke/ci-template.nvim](https://github.com/lukas-reineke/ci-template.nvim))## 📋 Installation
> **Note**:
> This section is only required if you wish to use the linter provided by the template.- [Install Stylua linter](https://github.com/JohnnyMorganz/StyLua#installation)
- [Install `bob` neovim version manager](https://github.com/MordechaiHadad/bob)## ☄ Getting started
The following checklist is all your need to do to start writing your first plugin.
### 1 - Clone the template repository
#### via HTTPs
```sh
git clone https://github.com/shortcuts/neovim-plugin-boilerplate.git ~/my-awesome-plugin.nvim
```#### via SSH
```sh
git clone [email protected]:shortcuts/neovim-plugin-boilerplate.git ~/my-awesome-plugin.nvim
```#### via GH
```sh
gh repo create my-awesome-plugin --template shortcuts/neovim-plugin-boilerplate --public --clone
```### 2 - Replace placeholder names with your plugin name
#### ✨ Automatically
The [setup script](https://github.com/shortcuts/neovim-plugin-boilerplate/blob/main/scripts/setup.sh) will rename files and placeholder names for you. Once done, you can remove anything `setup` related if you want to.
```sh
# interactive
make setup# automated
USERNAME=my-github-username PLUGIN_NAME=my-awesome-plugin REPOSITORY_NAME=my-awesome-plugin.nvim make setup
```#### ✍️ Manually
> **Note**:
> The placeholder names are purposely written with different casing. Make sure to keep it.##### File names
```sh
rm -rf doc
mv plugin/your-plugin-name.lua plugin/my-awesome-plugin.lua
mv lua/your-plugin-name lua/my-awesome-plugin
mv README_TEMPLATE.md README.md```
##### Search and replace placeholder occurrences:
```vim
:vimgrep /YourPluginName/ **/*
:cfdo %s/YourPluginName/MyAwesomePlugin/g | update:vimgrep /your-plugin-name/ **/* .github/**
:cfdo %s/your-plugin-name/my-awesome-plugin/g | update:vimgrep /YOUR_GITHUB_USERNAME/ .github/** **/*.md
:cfdo %s/YOUR_GITHUB_USERNAME/shortcuts/g | update:vimgrep /YOUR_REPOSITORY_NAME/ **/*.md
:cfdo %s/YOUR_REPOSITORY_NAME/my-awesome-plugin.nvim/g | update
```### 3 - Code
You can now start writing your plugin, make sure the following commands work:
1. `make deps` to install docs/tests dependencies
2. `make lint` to format the code
3. `make documentation` to generate the documentation
4. `make test` to run the testsEnjoy!
## ⌨ Contributing
PRs and issues are always welcome. Make sure to provide as much context as possible when opening one.