b85cd29627ff3cea5c60430bc3690678f44b3d45
Table Of Contents
Features
- Create annotations with one keybind
- Defaults for multiple languages and annotation conventions
- Extremely customizable and extensible
- Written in lua
Requirements
- Install nvim-treesitter
Installation
Use your favorite package manager to install Neogen, e.g:
use {
"danymat/neogen",
config = function()
require('neogen').setup {
enabled = true
}
end,
requires = "nvim-treesitter/nvim-treesitter"
}
Usage
I exposed a command :Neogen to generate the annotations.
You can bind it to your keybind of choice, like so:
vim.api.nvim_set_keymap("n", "<Leader>ng", ":Neogen<CR>", {})
It'll generate the annotations provided by neogen.
Configuration
require('neogen').setup {
enabled = true, -- required for Neogen to work
input_after_comment = true, -- (default: true) automatic jump (with insert mode) on inserted annotation
}
}
The configuration file for a language is in lua/configurations/{lang}.lua.
Note: Be aware that Neogen uses Treesitter to operate. You can install TSPlayground to check the AST.
If you're not satisfied with the default configuration for the language, you can change the defaults like this:
require('neogen').setup {
enabled = true, -- required for Neogen to work
languages = {
lua = {
template = {
{ nil, "- " }, -- First annotation line will be {default_comment}- (in lua ---)
{ "parameters", "- @param %s any" }, -- If matching parameters, will ouput --- @param {param} any
{ "vararg", "- @vararg any" },
{ "return_statement", "- @return any" }
}
}
}
}
}
Supported Languages
There is a list of supported languages and fields, with their annotation style
| Language | Annotation conventions | Supported fields |
|---|---|---|
| lua | Emmylua | @param, @varargs, @return |
GIFS
Contributing
Adding support for new languages is quite easy, and a documentation will be available soon!
Credits
Languages
Lua
99.2%
Shell
0.4%
Vim Script
0.2%
Makefile
0.2%
