2011-10-30 15 views

答えて

5

はここであなたが始めるために少し何かだ!)パラメータリストを想定し

" 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 

が1行にあり、それはパラメータを一致させようと、コメント文字列を構築し、そのコメント文字列を関数ヘッダーの前の行に追加します。

+0

誰かが興味がある場合は、星を引用符に変更することでPythonスタイルのコメントに簡単に対応できます。ただし、パラメータのデフォルト値がある場合は、パラメータとして扱われます。 – puk

+0

vimで編集中にこのスクリプトを呼び出すにはどうすればよいですか? – Freddo411

+0

これはどのように機能するのですか? (cc。@puk) –

4

を返します。たとえば

マクロと混在していますが、関数の引数はいくつありますか?ほとんどの場合、最大で4になります。

スニペット付きのソリューションは実行可能なものにすることができます。必要に応じて微調整 - -

+0

これは始める場所ですが、私が探していたものではありません。そのようなものは、ヴィムの外にも存在しますか?私はJSBeautifyがオプションとして提供していないことに驚いています。 – puk

2

のミックスを使用することができ、この

function(a , b , c){ 
} 

を取り、snipmate

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

はい、あなたは既に存在すると思います。私は実際にjsBeautifyがこれを処理することを望んでいました。 – puk

関連する問題