4b294e456a4bb42b15f3a315e4058009d0037f6e
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"
}
Configuration
require('neogen').setup {
enabled = true, -- required for Neogen to work
input_after_comment = true, -- automatic jump (with insert mode) on inserted annotation
}
}
The configuration file a language is in lua/configurations/{lang}.lua.
If you're not satisfied with the default configuration for the language, you can change the defaults like this:
Note: Be aware that Neogen uses Treesitter to operate. You can install TSPlayground to check the AST.
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 |
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.
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%
