============================================================================== ------------------------------------------------------------------------------ *neogen* What is Neogen ? # Abstract~ Neogen is an extensible and extremely configurable annotation generator for your favorite languages Want to know what the supported languages are ? Check out the up-to-date readme section: https://github.com/danymat/neogen#supported-languages # Concept~ - Create annotations with one keybind, and jump your cursor in the inserted annotation - Defaults for multiple languages and annotation conventions - Extremely customizable and extensible - Written in lua (and uses Tree-sitter) ------------------------------------------------------------------------------ *neogen.setup()* `neogen.setup`({opts}) Module setup Parameters~ {opts} `(table)` Config table (see |neogen.configuration|) Usage~ `require('neogen').setup({})` (replace `{}` with your `config` table) ------------------------------------------------------------------------------ *neogen.usage* Neogen Usage Neogen will use Treesitter parsing to properly generate annotations. The basic idea is that Neogen will generate annotation to the type you're in. For example, if you have a csharp function like (note the cursor position): > public class HelloWorld { public static void Main(string[] args) { # CURSOR HERE Console.WriteLine("Hello world!"); return true; } public int someMethod(string str, ref int nm, void* ptr) { return 1; } } < and you call `:Neogen class`, it will generate the annotation for the upper class: > /// /// ... /// public class HelloWorld { < Currently supported types are `func`, `class`, `type`, `file`. Check out the up-to-date readme section: https://github.com/danymat/neogen#supported-languages To know the supported types for a certain language NOTE: calling `:Neogen` without any type is the same as `:Neogen func` ------------------------------------------------------------------------------ *neogen.configuration* `neogen.configuration` # Basic configurations~ Neogen provides those defaults, and you can change them to suit your needs > neogen.configuration = { -- Enables Neogen capabilities enabled = true, -- Go to annotation after insertion, and change to insert mode input_after_comment = true, -- Symbol to find for jumping cursor in template jump_text = "$1", -- Configuration for default languages languages = {}, } < # Notes~ - to configure a language, just add your configurations in the `languages` table For example, for the `lua` lang: > languages = { lua = { -- Configuration here } } < - `jump_text` is widely used and will certainly break most language templates. I'm thinking of removing it from defaults so that it can't be modified ------------------------------------------------------------------------------ *test.generator* `neogen.generate`({opts}) The only function required to use Neogen. It'll try to find the first parent that matches a certain type. For example, if you are inside a function, and called `generate({ type = "func" })`, Neogen will go until the start of the function and start annotating for you. Parameters~ {opts} `(table)` Options to change default behaviour of generation. - {opts.type} `(string?, default: "func")` Which type we are trying to use for generating annotations. Currently supported: `func`, `class`, `type`, `file` ------------------------------------------------------------------------------ *neogen.develop* Contribute to Neogen * Want to add a new language? 1. Using the defaults to generate a new language support: https://github.com/danymat/neogen/blob/main/docs/adding-languages.md 2. (advanced) Only if the defaults aren't enough, please see here: https://github.com/danymat/neogen/blob/main/docs/advanced-integration.md * Want to contribute to an existing language? I guess you can still read the previous links, as they have some valuable knowledge inside. You can go and directly open/edit the configuration file relative to the language you want to contribute to. free to submit a PR, I will be happy to help you ! vim:tw=78:ts=8:noet:ft=help:norl: