4

Is there a plugin for vim, somewhat like Jsbeautify, which automatically generates JavaDoc like comments in the script files.

For example it will take this

function(a , b , c){
}

and return

/**
 * Description.
 *
 * @param a  Description.
 * @param b  Description.
 * @param c  Description.
 */
function(a , b , c){
}

3 Answers 3

6

Here's a little something to get you started - tweak as required!-)

" generate doc comment template
map <LocalLeader>/ :call GenerateDOCComment()<cr>

function! GenerateDOCComment()
  let l    = line('.')
  let i    = indent(l)
  let pre  = repeat(' ',i)
  let text = getline(l)
  let params   = matchstr(text,'([^)]*)')
  let paramPat = '\([$a-zA-Z_0-9]\+\)[, ]*\(.*\)'
  echomsg params
  let vars = []
  let m    = ' '
  let ml = matchlist(params,paramPat)
  while ml!=[]
    let [_,var;rest]= ml
    let vars += [pre.' * @param '.var]
    let ml = matchlist(rest,paramPat,0)
  endwhile
  let comment = [pre.'/**',pre.' * '] + vars + [pre.' */']
  call append(l-1,comment)
  call cursor(l+1,i+3)
endfunction

Assuming the parameter list is on one line, it tries to match out the parameters, builds up a comment string, and appends that comment string to the line before the function header.

Sign up to request clarification or add additional context in comments.

2 Comments

In case anyone is interested, this can easily be made to cater to Python style comments by changing the stars to quotes. If you have default values for parameters, however, they will be considered as parameters
Can you explain how does this work, please? (cc. @puk)
4

with snipmate you can make a snippet or use a mix of actual js snippets

1 Comment

It's a place to start, however, it's not what I was looking for. Does such a thing exist even outside of vim? I'm surprised JSBeautify doesn't provide it as an option.
2

I was thinking on a plugin mixed with macros, but how many arguments may a function take? Most of the time, it will be 4 at the max.

The solution with snippets can be a viable one.

1 Comment

Yes but you'd think one would already exist. I actually was hoping jsBeautify would take care of this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.