{"id":13478787,"url":"https://github.com/kkoomen/vim-doge","last_synced_at":"2025-05-14T21:06:50.010Z","repository":{"id":35253399,"uuid":"183955081","full_name":"kkoomen/vim-doge","owner":"kkoomen","description":"(Do)cumentation (Ge)nerator for nearly 20 languages 📚 Generate proper code documentation with a single keypress. ⚡️🔥","archived":false,"fork":false,"pushed_at":"2025-04-06T13:28:36.000Z","size":4354,"stargazers_count":1030,"open_issues_count":14,"forks_count":53,"subscribers_count":8,"default_branch":"master","last_synced_at":"2025-04-15T00:43:13.540Z","etag":null,"topics":["boilerplate","docblock","documentation","doge","fast","generator","instant","languages","multilingual","neovim","polyglot","skeleton","vim"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kkoomen.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"kkoomen","custom":["https://paypal.me/koomenk","https://buymeacoff.ee/kkoomen"]}},"created_at":"2019-04-28T20:23:34.000Z","updated_at":"2025-04-14T13:21:28.000Z","dependencies_parsed_at":"2023-10-15T16:53:41.269Z","dependency_job_id":"330a0bb4-6f8b-4b97-80d7-0d7d9c1fd754","html_url":"https://github.com/kkoomen/vim-doge","commit_stats":null,"previous_names":[],"tags_count":180,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkoomen%2Fvim-doge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkoomen%2Fvim-doge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkoomen%2Fvim-doge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kkoomen%2Fvim-doge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kkoomen","download_url":"https://codeload.github.com/kkoomen/vim-doge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254227612,"owners_count":22035669,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["boilerplate","docblock","documentation","doge","fast","generator","instant","languages","multilingual","neovim","polyglot","skeleton","vim"],"created_at":"2024-07-31T16:02:03.073Z","updated_at":"2025-05-14T21:06:44.984Z","avatar_url":"https://github.com/kkoomen.png","language":"Rust","funding_links":["https://github.com/sponsors/kkoomen","https://paypal.me/koomenk","https://buymeacoff.ee/kkoomen"],"categories":["Rust","boilerplate","Vim script","Tools"],"sub_categories":["Editing"],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/kkoomen/vim-doge/blob/master/doc/demos\"\u003e\n    \u003cimg src=\"./doc/banner.jpg\" alt=\"vim-doge\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/github/actions/workflow/status/kkoomen/vim-doge/tests.yml?branch=master\u0026label=tests\" alt=\"tests status\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/vim-7.4.2119%2B-informational.svg\" alt=\"Minimum supported Vim version\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/neovim-0.3.2%2B-informational.svg\" alt=\"Minimum supported NeoVim version\" /\u003e\n  \u003cimg src=\"https://img.shields.io/github/v/tag/kkoomen/vim-doge?label=version\" alt=\"Latest version\" /\u003e\n  \u003ca href=\"https://github.com/kkoomen/vim-doge/blob/master/LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/license/kkoomen/vim-doge.svg\" alt=\"License\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003e Any fool can write code that a computer can understand. Good programmers write\n\u003e code that humans can understand. -- Martin Fowler, 1999\n\nWe all love documentation because it makes our codebases easier to understand,\nyet no one has time to write it in a good and proper way.\n\nVim-doge is a (Do)cumentation (Ge)nerator which will generate a proper documentation\nskeleton based on certain expressions (mainly functions). Simply put your cursor\non a function, press `\u003cLeader\u003ed`, jump quickly through `TODO` items using\n`\u003cTab\u003e` and `\u003cS-Tab\u003e` to quickly add descriptions and go on coding!\n\n\u003ca href=\"https://github.com/kkoomen/vim-doge/blob/master/doc/demos\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/visit%20demo%20page-D3C5AF\" alt=\"Visit demo page button\" /\u003e\n\u003c/a\u003e\n\n# Table of Contents\n\n- [Table of Contents](#table-of-contents)\n- [Supported languages and doc standards](#supported-languages-and-doc-standards)\n- [Getting started](#getting-started)\n- [Configuration](#configuration)\n  * [Choosing a different doc standard](#choosing-a-different-doc-standard)\n  * [Options](#options)\n    + [`g:doge_install_path`](#gdoge_install_path)\n    + [`g:doge_enable_mappings`](#gdoge_enable_mappings)\n    + [`g:doge_mapping`](#gdoge_mapping)\n    + [`g:doge_filetype_aliases`](#gdoge_filetype_aliases)\n    + [`g:doge_buffer_mappings`](#gdoge_buffer_mappings)\n    + [`g:doge_mapping_comment_jump_forward`](#gdoge_mapping_comment_jump_forward)\n    + [`g:doge_mapping_comment_jump_backward`](#gdoge_mapping_comment_jump_backward)\n    + [`g:doge_comment_interactive`](#gdoge_comment_interactive)\n    + [`g:doge_comment_jump_wrap`](#gdoge_comment_jump_wrap)\n    + [`g:doge_comment_jump_modes`](#gdoge_comment_jump_modes)\n- [Commands](#commands)\n    + [`:DogeGenerate {doc_standard}`](#dogegenerate-doc_standard)\n- [Language-specific configuration](#language-specific-configuration)\n    + [JavaScript](#javascript)\n    + [PHP](#php)\n    + [Python](#python)\n    + [Doxygen](#doxygen)\n- [Headless mode](#headless-mode)\n- [Help](#help)\n- [Contributing](#contributing)\n  * [Tree sitter](#tree-sitter)\n- [Development](#development)\n    + [Environment setup](#environment-setup)\n    + [Helper](#helper)\n    + [Testing locally](#testing-locally)\n- [Motivation](#motivation)\n- [Supporting vim-doge](#supporting-vim-doge)\n- [Alternative projects](#alternative-projects)\n- [License](#license)\n\n# Supported languages and doc standards\n\nEvery language that has a documentation standard should be supported by vim-doge.\n\nIs your favorite language not supported?\n[Suggest a new language][suggest-language] :tada:\u003cbr/\u003e\nIs your favorite doc standard not supported?\n[Suggest a new doc standard][suggest-doc-standard] :tada:\n\n|                    | Language                                               | Doc standards                                                                                    |\n| :----------------- | :----------------------------------------------------- | :----------------------------------------------------------------------------------------------- |\n| :white_check_mark: | Python                                                 | [reST][py-rest], [Numpy][py-numpy], [Google][py-google], [Sphinx][py-sphinx], [Doxygen][doxygen] |\n| :white_check_mark: | PHP                                                    | [phpdoc][phpdoc]                                                                                 |\n| :white_check_mark: | JavaScript (Vanilla, ES6, FlowJS, NodeJS, Svelte, Vue) | [JSDoc][jsdoc]                                                                                   |\n| :white_check_mark: | TypeScript                                             | [JSDoc][jsdoc]                                                                                   |\n| :white_check_mark: | HTML (through inline `\u003cscript\u003e` tags)                  | [JSDoc][jsdoc]                                                                                   |\n| :white_check_mark: | Lua                                                    | [LDoc][ldoc]                                                                                     |\n| :white_check_mark: | Java                                                   | [JavaDoc][javadoc]                                                                               |\n| :white_check_mark: | Groovy                                                 | [JavaDoc][javadoc]                                                                               |\n| :white_check_mark: | Ruby                                                   | [YARD][yard]                                                                                     |\n| :white_check_mark: | C++                                                    | [Doxygen][doxygen]                                                                               |\n| :white_check_mark: | C                                                      | [Doxygen][doxygen], [KernelDoc][kerneldoc]                                                       |\n| :white_check_mark: | C#                                                     | [XMLDoc][xmldoc]                                                                                 |\n| :white_check_mark: | Bash                                                   | [Google][sh-google]                                                                              |\n| :white_check_mark: | Rust                                                   | [RustDoc][rustdoc]                                                                               |\n| :white_check_mark: | R                                                      | [Roxygen2][roxygen2]                                                                             |\n| :white_check_mark: | Scala                                                  | [ScalaDoc][scaladoc]                                                                             |\n\n# Getting started\n\nUsing plug:\n\n- `Plug 'kkoomen/vim-doge', { 'do': { -\u003e doge#install() } }`\n\nUsing vim-pack:\n\n- `git clone --recursive --depth 1 https://github.com/kkoomen/vim-doge ~/.vim/pack/*/start/vim-doge`\n- Open Vim and run `:call doge#install()`\n\nUsing Pathogen:\n\n- `git clone --recursive --depth 1 https://github.com/kkoomen/vim-doge ~/.vim/bundle/vim-doge`\n- Open Vim and run `:call doge#install()`\n\nUsing Vundle:\n\n- `Plugin 'kkoomen/vim-doge'`\n- Open Vim and run `:call doge#install()`\n\nUsing [packer.nvim](https://github.com/wbthomason/packer.nvim):\n\n```lua\nuse {\n  'kkoomen/vim-doge',\n  run = ':call doge#install()'\n}\n```\n\nUsing `LazyVim`:\n- Add plugin config to lua plugins folder:\n  ```\n  {\n    \"kkoomen/vim-doge\",\n  }\n  ```\n- Open nvim and run `:call doge#install()`\n\n\n# Configuration\n\nRun `:help doge` to get the full help page.\n\n## Choosing a different doc standard\n\nVim-doge supports multiple doc standard and you can overwrite them per filetype\nin your vimrc. Is your favorite doc standard not supported?\n[Suggest a new doc standard][suggest-doc-standard] :tada:\n\nExample:\n\n```vim\nlet g:doge_doc_standard_python = 'numpy'\n```\n\nIf you want to change the doc standard specifically for a buffer, then you can do:\n\n```vim\n\" Inside test.py\n:let b:doge_doc_standard = 'numpy'\n```\n\nIf you want to generate a docblock using a different doc standard just for a\nspecific expression, then you can use the `DogeGenerate` command:\n\n```vim\n\" Inside test.py, cursor is at a function expression (cursor = `|`):\n\"   |def foo(p1, p2):\n\"       pass\n:DogeGenerate numpy\n```\n\nHere is the full list of available doc standards per filetype:\n\n:warning: For C and C++, see [C Family Doc Standard Examples](./doc/c-family-doc-standard-examples.md).\n\n| Variable                         | Default             | Supported                                                                                                                                                                                                                                              |\n| :------------------------------- | :------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `g:doge_doc_standard_python`     | `'reST'`            | `'reST'`, `'numpy'`, `'google'`, `'sphinx'`, `'doxygen'`                                                                                                                                                                                                            |\n| `g:doge_doc_standard_php`        | `'phpdoc'`          | `'phpdoc'`                                                                                                                                                                                                                                             |\n| `g:doge_doc_standard_javascript` | `'jsdoc'`           | `'jsdoc'`                                                                                                                                                                                                                                              |\n| `g:doge_doc_standard_html`       | `'jsdoc'`           | `'jsdoc'`                                                                                                                                                                                                                                              |\n| `g:doge_doc_standard_lua`        | `'ldoc'`            | `'ldoc'`                                                                                                                                                                                                                                               |\n| `g:doge_doc_standard_java`       | `'javadoc'`         | `'javadoc'`                                                                                                                                                                                                                                            |\n| `g:doge_doc_standard_groovy`     | `'javadoc'`         | `'javadoc'`                                                                                                                                                                                                                                            |\n| `g:doge_doc_standard_ruby`       | `'YARD'`            | `'YARD'`                                                                                                                                                                                                                                               |\n| `g:doge_doc_standard_cpp`        | `'doxygen_javadoc'` | `'doxygen_javadoc'`, `'doxygen_javadoc_no_asterisk'`, `'doxygen_javadoc_banner'`, `'doxygen_qt'`, `'doxygen_qt_no_asterisk'`, `'doxygen_cpp_comment_slash'`, `'doxygen_cpp_comment_exclamation'`, `'doxygen_cpp_comment_slash_banner'`                 |\n| `g:doge_doc_standard_c`          | `'doxygen_javadoc'` | `'kernel_doc'`, `'doxygen_javadoc'`, `'doxygen_javadoc_no_asterisk'`, `'doxygen_javadoc_banner'`, `'doxygen_qt'`, `'doxygen_qt_no_asterisk'`, `'doxygen_cpp_comment_slash'`, `'doxygen_cpp_comment_exclamation'`, `'doxygen_cpp_comment_slash_banner'` |\n| `g:doge_doc_standard_sh`         | `'google'`          | `'google'`                                                                                                                                                                                                                                             |\n| `g:doge_doc_standard_rs`         | `'rustdoc'`         | `'rustdoc'`                                                                                                                                                                                                                                            |\n| `g:doge_doc_standard_cs`         | `'xmldoc'`          | `'xmldoc'`                                                                                                                                                                                                                                             |\n| `g:doge_doc_standard_r`          | `'roxygen2'`        | `'roxygen2'`                                                                                                                                                                                                                                           |\n| `g:doge_doc_standard_scala`      | `'scaladoc'`        | `'scaladoc'`                                                                                                                                                                                                                                           |\n\n## Options\n\n### `g:doge_install_path`\n\nDefault: `/path/to/vim-doge`\n\nThe path where the bin/ directory will be installed and loaded from. Can be\nuseful if your system is read-only or uses immutable datastructures.\n\n### `g:doge_enable_mappings`\n\nDefault: `1`\n\nWhether to enable built-in mappings. If you decide to disable this, then you can\ncopy the mappings below and change them to your needs:\n\n```vim\n\" Generate comment for current line.\nnmap \u003csilent\u003e \u003cLeader\u003ed \u003cPlug\u003e(doge-generate)\n\n\" Interactive mode comment todo-jumping.\nnmap \u003csilent\u003e \u003cTAB\u003e \u003cPlug\u003e(doge-comment-jump-forward)\nnmap \u003csilent\u003e \u003cS-TAB\u003e \u003cPlug\u003e(doge-comment-jump-backward)\nimap \u003csilent\u003e \u003cTAB\u003e \u003cPlug\u003e(doge-comment-jump-forward)\nimap \u003csilent\u003e \u003cS-TAB\u003e \u003cPlug\u003e(doge-comment-jump-backward)\nsmap \u003csilent\u003e \u003cTAB\u003e \u003cPlug\u003e(doge-comment-jump-forward)\nsmap \u003csilent\u003e \u003cS-TAB\u003e \u003cPlug\u003e(doge-comment-jump-backward)\n```\n\nOr with Lua for Neovim:\n\n```lua\n-- Generate comment for current line\nvim.keymap.set('n', '\u003cLeader\u003ed', '\u003cPlug\u003e(doge-generate)')\n\n-- Interactive mode comment todo-jumping\nvim.keymap.set('n', '\u003cTAB\u003e', '\u003cPlug\u003e(doge-comment-jump-forward)')\nvim.keymap.set('n', '\u003cS-TAB\u003e', '\u003cPlug\u003e(doge-comment-jump-backward)')\nvim.keymap.set('i', '\u003cTAB\u003e', '\u003cPlug\u003e(doge-comment-jump-forward)')\nvim.keymap.set('i', '\u003cS-TAB\u003e', '\u003cPlug\u003e(doge-comment-jump-backward)')\nvim.keymap.set('x', '\u003cTAB\u003e', '\u003cPlug\u003e(doge-comment-jump-forward)')\nvim.keymap.set('x', '\u003cS-TAB\u003e', '\u003cPlug\u003e(doge-comment-jump-backward)')\n```\n\n### `g:doge_mapping`\n\nDefault: `'\u003cLeader\u003ed'`\n\nThe mapping to trigger vim-doge. The mapping accepts a count, to select a\nspecific doc standard, if more than one is defined.\n\n### `g:doge_filetype_aliases`\n\nDefault:\n\n```\n{\n  'javascript': [\n    'javascript.jsx',\n    'javascriptreact',\n    'javascript.tsx',\n    'typescriptreact',\n    'typescript',\n    'typescript.tsx',\n  ],\n  'html': ['svelte', 'vue'],\n  'java': ['groovy'],\n}\n```\n\nSet filetypes as an alias for other filetypes. The key should be the filetype\nthat is defined in `ftplugin/\u003cfiletype\u003e.vim`. The value must be a list of 1 or\nmore filetypes that will be aliases.\n\nExample:\n\n```vim\nlet g:doge_filetype_aliases = {\n\\  'javascript': ['typescript']\n\\}\n```\n\nIf you use the above settings and you open `myfile.ts` then it will behave like\nyou're opening a JavaScript filetype.\n\n### `g:doge_buffer_mappings`\n\nDefault: `1`\n\nMappings to jump forward/backward are applied as buffer mappings when\ninteractive mode starts and removed when it ends.\n\n### `g:doge_mapping_comment_jump_forward`\n\nDefault: `'\u003cTab\u003e'`\n\nThe mapping to jump forward to the next `TODO` item in a comment. Requires\n`g:doge_comment_interactive` to be enabled.\n\n### `g:doge_mapping_comment_jump_backward`\n\nDefault: `'\u003cS-Tab\u003e'`\n\nThe mapping to jump backward to the previous `TODO` item in a comment. Requires\n`g:doge_comment_interactive` to be enabled.\n\n### `g:doge_comment_interactive`\n\nDefault: `1`\n\nJumps interactively through all `TODO` items in the generated comment.\n\n### `g:doge_comment_jump_wrap`\n\nDefault: `1`\n\nContinue to cycle among placeholders when reaching the start or end.\n\n### `g:doge_comment_jump_modes`\n\nDefault: `['n', 'i', 's']`\n\nDefines the modes in which doge will jump forward and backward when interactive\nmode is active. For example: removing `i` would allow you to use `\u003cTab\u003e` for\nautocompletion in insert mode.\n\n# Commands\n\n### `:DogeGenerate {doc_standard}`\n\nCommand to generate documentation. The `{doc_standard}` accepts a count or a\nstring as argument, and it can complete the available doc standards for the\ncurrent buffer.\n\nThe numeric value should point to an index key from the\n`b:doge_supported_doc_standards` variable.\n\nThe string value should point to a doc standard name listed in the\n`b:doge_supported_doc_standards` variable.\n\n# Language-specific configuration\n\nBelow is a list of language-specific configuration and their default values.\n\n### JavaScript\n\nJavaScript settings automatically apply for all the default filetypes that are\nbeing aliased, see [`g:doge_filetype_aliases`](#gdoge_filetype_aliases).\n\n```vim\nlet g:doge_javascript_settings = {\n\\  'destructuring_props': 1,\n\\  'omit_redundant_param_types': 0,\n\\}\n```\n\n- `destructuring_props`: Whether to generate `@param` tags for the destructured\n  properties in a function expression.\n\n- `omit_redundant_param_types`: Whether to omit the `{type}` part of\n  parameters and return types when the type is known (i.e. typescript).\n\n### PHP\n\n```vim\nlet g:doge_php_settings = {\n\\  'resolve_fqn': 1\n\\}\n```\n\n- `resolve_fqn`: Whether to resolve the FQN based on the `use` statements in the\n  current buffer. The FQN will be resolved for type hints in parameters and the\n  return type.\n\n### Python\n\n```vim\nlet g:doge_python_settings = {\n\\  'single_quotes': 0,\n\\  'omit_redundant_param_types': 1\n\\}\n```\n\n- `single_quotes`: Whether to use single quotes for the multiline comments delimiters.\n\n- `omit_redundant_param_types`: Whether to omit the `{type}` part of parameters\n  and return types when the type is specified in the function itself.\n\n### Doxygen\n\n```vim\nlet g:doge_doxygen_settings = {\n\\  'char': '@'\n\\}\n```\n\n- `char`: Character to use for docblock tags. Use `'@'` for `@param` or `'\\'` for `\\param`.\n\n# Headless mode\n\nIf you're running your vim commands inside a docker, CI or similar environments\nwith commands such as `vim +PlugInstall +qall \u003e /dev/null` then you probably\nwant to use headless mode. This will not spawn any terminals or progress bars\nand will simply run any process by vim-doge in the background.\n\nThis feature can be enabled by passing in `{ 'headless': 1 }` into the\n`doge#install()` like so: `doge#install({ 'headless': 1 })`.\n\nExample using vim-plug:\n\n```vim\nPlug 'kkoomen/vim-doge', {'do': { -\u003e doge#install({ 'headless': 1 }) }}\n```\n\n# Help\n\nTo open all the help pages, run `:help doge`.\n\n# Contributing\n\nHelp or feedback is always appreciated. If you find any bugs, feel free to\n[submit a bug report][bug-report]. If you think vim-doge can be improved, feel\nfree to submit a [feature request][feature-request] or a pull request if you\nhave time to help out.\n\nRead the [Contribution Guidelines][contrib-guide] and [Code of Conduct][coc]\nwhen doing contributions.\n\n## Tree sitter\n\nIf you want a new language to be supported but tree-sitter doesn't support it\nyet, then feel free to create a custom tree-sitter language parser for that\nlanguage and then we'll integrate it into vim-doge.\n\n- [Creating parsers][create-tree-sitter-parser]\n\n# Development\n\n### Environment setup\n\nMake sure you [install Rust and Cargo][rust-cargo-install] and you're good to go.\n\n### Helper\n\nVim-doge uses a custom command-line interface called\n[vim-doge-helper](./helper/), all made in Rust, that is responsible for parsing\ncode and generating docblocks. Go have a look at the `helper` directory if you\nwant to contribute to the parsers.\n\n\n### Testing locally\n\nIf you want to run the tests locally, you should install [vader][vader] at the\nsame directory level that vim-doge is, so your structure should look like this\n(using vim-plug example):\n\n```\n~/.vim/plugged/\n├── vader.vim\n└── vim-doge\n```\n\nAfter that, you can do the following:\n\n- `cd /path/to/vim-doge`\n- `vim -u test/vimrc`\n- Inside vim you can now run: `Vader test/**/**/*.vader` to run all tests\n\n:bulb: If you're working on specific tests, you can run that specific test only:\n`Vader test/filetypes/\u003cfiletype\u003e/functions.\u003cext\u003e`.\n\nFor more information, see [Contribution Guidelines][contrib-guide].\n\n# Motivation\n\nI created vim-doge mainly because I couldn't find a plugin that could generate\nproper comments for a big collection of languages that I would use on a daily\nbasis in a quick and easy way.\n\nRather than scraping off the internet to find all sorts of vim plugins for every\nlanguage I was coding in, I was more or less looking for a single plugin that\nsupports every language I was working in.\n\nAnother big motivation for me is that I've noticed people tend to skip the\ndocumentation part because writing _just the skeleton_ of the comment takes\nalready too much time and I am one of those people. Having the skeleton\ngenerated and an interactive mode to quickly add descriptions is a big\ntime saver.\n\n# Supporting vim-doge\n\nDo you enjoy using vim-doge? Give it a star on GitHub and submit your vote on\n[vim.org][vim-script].\n\n# Alternative projects\n\nVim-doge generates docblocks, but perhaps you want to take it a step further and\ngenerate it into HTML. [Dooku.nvim](https://github.com/Zeioth/dooku.nvim) is\nanother plugin that can suit these needs.\n\n# License\n\nVim-doge is licensed under the GPL-3.0 license.\n\n[py-rest]: http://daouzli.com/blog/docstring.html#restructuredtext\n[py-numpy]: http://daouzli.com/blog/docstring.html#numpydoc\n[py-google]: https://github.com/google/styleguide/blob/gh-pages/pyguide.md#38-comments-and-docstrings\n[py-sphinx]: https://sphinx-rtd-tutorial.readthedocs.io/en/latest/docstrings.html#the-sphinx-docstring-format\n[phpdoc]: https://www.phpdoc.org\n[jsdoc]: https://jsdoc.app\n[ldoc]: https://github.com/stevedonovan/LDoc\n[javadoc]: https://www.oracle.com/technetwork/articles/javase/index-137868.html\n[yard]: https://www.rubydoc.info/gems/yard/file/docs/Tags.md\n[doxygen]: http://www.doxygen.nl\n[rustdoc]: https://doc.rust-lang.org/rust-by-example/meta/doc.html\n[kerneldoc]: https://www.kernel.org/doc/html/latest/doc-guide/kernel-doc.html\n[sh-google]: https://google.github.io/styleguide/shell.xml#Function_Comments\n[xmldoc]: https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/xmldoc/\n[roxygen2]: https://github.com/klutometis/roxygen\n[scaladoc]: https://docs.scala-lang.org/style/scaladoc.html\n\n[demo-readme]: https://github.com/kkoomen/vim-doge/blob/master/doc/demos\n[suggest-language]: https://github.com/kkoomen/vim-doge/issues/new?labels=enhancement\u0026template=feature_request.md\u0026title=Add+support+for+\u003clanguage\u003e\n[suggest-doc-standard]: https://github.com/kkoomen/vim-doge/issues/new?labels=enhancement\u0026template=doc_standard.md\n[bug-report]: https://github.com/kkoomen/vim-doge/issues/new?labels=bug\u0026template=bug_report.md\n[feature-request]: https://github.com/kkoomen/vim-doge/issues/new?labels=enhancement\u0026template=feature_request.md\n[contrib-guide]: https://github.com/kkoomen/vim-doge/blob/master/CONTRIBUTING.md\n[coc]: https://github.com/kkoomen/vim-doge/blob/master/CODE_OF_CONDUCT.md\n[vim-script]: https://www.vim.org/scripts/script.php?script_id=5801\n[vader]: https://github.com/junegunn/vader.vim\n[rust-cargo-install]: https://doc.rust-lang.org/cargo/getting-started/installation.html\n[create-tree-sitter-parser]: https://tree-sitter.github.io/tree-sitter/creating-parsers\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkoomen%2Fvim-doge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkkoomen%2Fvim-doge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkkoomen%2Fvim-doge/lists"}