Code Monkey home page Code Monkey logo

ranebrown / vim-doge Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kkoomen/vim-doge

0.0 2.0 0.0 814 KB

(Do)cumentation (Ge)nerator (10+ languages) ๐Ÿ“š Generate proper code documentation skeletons with a single keypress. โšก๏ธ๐Ÿ”ฅ

License: GNU General Public License v3.0

Vim Script 59.39% PHP 1.70% JavaScript 8.68% Python 4.93% CoffeeScript 0.49% Lua 0.89% Java 1.89% Ruby 0.82% Scala 3.23% Dockerfile 0.46% Shell 7.36% Kotlin 8.18% R 0.87% C++ 0.93% C 0.17%

vim-doge's Introduction

DoGe

Travic CI Build Status Minimum supported Vim version Minimum supported NeoVim version Latest version License

Any fool can write code that a computer can understand. Good programmers write code that humans can understand. -- Martin Fowler, 1999

We all love documentation because it makes our codebases easier to understand, yet no one has time to write it in a good and proper way.

DoGe is a (Do)cumentation (Ge)nerator which will generate a proper documentation skeleton based on certain expressions (mainly functions). Simply put your cursor on a function, press <Leader>d, jump quickly through TODO items using <Tab> and <S-Tab> to quickly add descriptions and go on coding!

Visit the demo page

Table of Contents

Supported languages and doc standards

Every language that has a documentation standard should be supported by DoGe.

Is your favorite language not supported? Suggest a new language ๐ŸŽ‰
Is your favorite doc standard not supported? Suggest a new doc standard ๐ŸŽ‰

Language Doc standards
โœ… Python reST, Numpy, Google, Sphinx
โœ… PHP phpdoc
โœ… JavaScript (Including: ES6, FlowJS and NodeJS) JSDoc
โœ… TypeScript JSDoc
โœ… CoffeeScript JSDoc
โœ… Lua LDoc
โœ… Java JavaDoc
โœ… Groovy JavaDoc
โœ… Ruby YARD
โœ… Scala ScalaDoc
โœ… Kotlin KDoc
โœ… R Roxygen2
โœ… C++ Doxygen
โœ… C Doxygen, KernelDoc

Getting started

Install DoGe:

Using vim-pack:

  • git clone --depth 1 https://github.com/kkoomen/vim-doge ~/.vim/pack/*/start/vim-doge

Using pathogen:

  • git clone --depth 1 https://github.com/kkoomen/vim-doge ~/.vim/bundle/vim-doge

Using plug:

  • Plug 'kkoomen/vim-doge'

Configuration

Run :help doge to get the full help page.

Choosing a different doc standard

DoGe supports multiple doc standard and you can overwrite them per filetype in your vimrc. Is your favorite doc standard not supported? Suggest a new doc standard ๐ŸŽ‰

Example:

let g:doge_doc_standard_python = 'numpy'

If you want to change the doc standard specifically for a buffer you can do:

" Inside test.py
:let b:doge_doc_standard = 'numpy'

Here is the full list of available doc standards per filetype:

Variable Default Supported
g:doge_doc_standard_python 'reST' 'reST', 'numpy', 'google', 'sphinx'
g:doge_doc_standard_php 'phpdoc' 'phpdoc'
g:doge_doc_standard_javascript 'jsdoc' 'jsdoc'
g:doge_doc_standard_typescript 'jsdoc' 'jsdoc'
g:doge_doc_standard_coffeescript 'jsdoc' 'jsdoc'
g:doge_doc_standard_lua 'ldoc' 'ldoc'
g:doge_doc_standard_java 'javadoc' 'javadoc'
g:doge_doc_standard_groovy 'javadoc' 'javadoc'
g:doge_doc_standard_ruby 'YARD' 'YARD'
g:doge_doc_standard_scala 'scaladoc' 'scaladoc'
g:doge_doc_standard_kotlin 'kdoc' 'kdoc'
g:doge_doc_standard_r 'roxygen2' 'roxygen2'
g:doge_doc_standard_cpp 'doxygen_javadoc' 'doxygen_javadoc', 'doxygen_javadoc_no_asterisk', 'doxygen_javadoc_banner', 'doxygen_qt', 'doxygen_qt_no_asterisk'
g:doge_doc_standard_c 'doxygen_javadoc' 'kernel_doc', 'doxygen_javadoc', 'doxygen_javadoc_no_asterisk', 'doxygen_javadoc_banner', 'doxygen_qt', 'doxygen_qt_no_asterisk'

Options

g:doge_enable_mappings

Default: 1

Whether or not to enable built-in mappings.

g:doge_mapping

Default: '<Leader>d'

The mapping to trigger DoGe.

g:doge_buffer_mappings

Default: 1

Mappings to jump forward/backward are applied as buffer mappings when interactive mode starts and removed when it ends.

g:doge_mapping_comment_jump_forward

Default: '<Tab>'

The mapping to jump forward to the next TODO item in a comment. Requires g:doge_comment_interactive to be enabled.

g:doge_mapping_comment_jump_backward

Default: '<S-Tab>'

The mapping to jump backward to the next TODO item in a comment. Requires g:doge_comment_interactive to be enabled.

g:doge_comment_interactive

Default: 1

Jumps interactively through all TODO items in the generated comment.

g:doge_comment_jump_wrap

Default: 1

Continue to cycle among placeholders when reaching the start or end.

g:doge_comment_jump_modes

Default: ['n', 'i', 's']

Defines the modes in which doge will jump forward and backward when interactive mode is active. For example: removing 'i' would allow you to use for autocompletion in insert mode.

Commands

:DogeGenerate

Command to generate documentation.

FAQ

Using C / C++

If you use a language that belongs to the C-family then you have to use clang. This is the parser that is being used for generating proper documentation.

Prerequisites

  • Vim requires to be compiled with python 3.
  • Python 3.5+
  • pip3 install clang

Package manager

If you've installed clang via your package manager then you might have a file called libclang.so.<libclang-major-version> somewhere in your system, for example: /usr/lib/libclang.so.8. Go into the directory where this file exists using cd and create a symlink:

cd /usr/lib/
ln -s libclang.so.8 libclang.so

Now it should be detectable via python if you do:

$ python3
>>> from clang.cindex import Index
>>> Index.create()
>>> <clang.cindex.Index object at 0x1084763d0>

Manual compiling

If you compiled libclang manually, then make sure that your $PATH and $LD_LIBRARY_PATH are set correctly. The libclang binary its location should be defined in the $LD_LIBRARY_PATH.

E.g.

# for macOS
export LD_LIBRARY_PATH="/Library/Developer/CommandLineTools/usr/lib/"

Help

To open all the help pages, run :help doge.

Contributing

Help or feedback is always appreciated. If you find any bugs, feel free to submit a bug report. If you think DoGe can be improved, feel free to submit a feature request or a pull request if you have time to help out.

Read the Contribution Guidelines and Code of Conduct when doing contributions.

Motivation

I created DoGe mainly because I couldn't find a plugin that could generate proper comments for a big collection of languages in a quick and easy way. I am a polyglot developer when it comes to programming languages and I couldn't find proper vim plugins that would generate documentation quickly for all languages I did want to be supported.

Rather then scraping off the internet to find all sorts of vim plugins for every language I was coding in, I did want a single plugin that would support every language I was working in.

Another big motivation for me is that I've noticed people tend to skip the documentation part because writing just the skeleton of the comment takes already too much time and I am one of those people. Having the skeleton generated and an interactive mode to quickly add descriptions is a big time saver.

Supporting DoGe

Do you enjoy using DoGe? Give it a star on GitHub and submit your vote on vim.org.

License

DoGe is licensed under the GPL-3.0 license.

vim-doge's People

Contributors

kkoomen avatar mg979 avatar vigoux avatar robertaudi avatar zkamvar avatar karolbedkowski avatar paulkass avatar ranebrown avatar braun-steven avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.