# Neogen - Your Annotation Toolkit
# Table Of Contents * [Features](#features) * [Requirements](#requirements) * [Installation](#installation) * [Usage](#usage) * [Configuration](#configuration) * [Supported Languages](#supported-languages) * [GIFS](#gifs) * [Contributing](#contributing) ## Features - Create annotations with one keybind - Defaults for multiple languages and annotation conventions - Extremely customizable and extensible - Written in lua ## Requirements - Install [nvim-treesitter](https://github.com/nvim-treesitter/nvim-treesitter) ## Installation Use your favorite package manager to install Neogen, e.g: ```lua 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: ```lua vim.api.nvim_set_keymap("n", "ng", ":Neogen", {}) ``` It'll generate the annotations provided by neogen. ## Configuration ```lua 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](https://github.com/nvim-treesitter/playground) to check the AST._ If you're not satisfied with the default configuration for the language, you can change the defaults like this: ```lua 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 ![](./.images/recording_1.mov) ## Contributing Adding support for new languages is quite easy, and a documentation will be available soon! ## Credits - Binx, for making that gorgeous logo for free! - [Github](https://github.com/Binx-Codes/) - [Reddit](https://www.reddit.com/u/binxatmachine)