Doxygen 形式のコメント入力をサポートするスクリプト。 Wiki の方に使い方が載っています。
このままでも便利なのですが、仕事でこれまで書いていたコメントと形式が違うので少しスクリプトをいじって同じ形式で出せるようにしてみました。ある程度の設定は _vimrc に書くことで変更できるのですが、全部は制御できないようなので。以下パッチ。
*** /cygdrive/c/home/backup_vim/DoxygenToolkit.vim Wed Apr 19 08:14:05 2006 --- DoxygenToolkit.vim Wed Apr 19 11:28:58 2006 *************** *** 296,309 **** " Start creating doxygen pattern exec "normal `d" ! exec "normal O" . g:DoxygenToolkit_startCommentTag . g:DoxygenToolkit_blockHeader exec "normal o" . g:DoxygenToolkit_interCommentTag . g:DoxygenToolkit_briefTag_pre mark d ! if ( g:DoxygenToolkit_endCommentTag == "" ) ! exec "normal o" . g:DoxygenToolkit_startCommentTag . g:DoxygenToolkit_blockFooter ! else ! exec "normal o" . g:DoxygenToolkit_blockFooter . g:DoxygenToolkit_endCommentTag ! endif exec "normal `d" " Class definition, let's start with brief tag --- 296,305 ---- " Start creating doxygen pattern exec "normal `d" ! exec "normal O" . "//" . g:DoxygenToolkit_blockHeader exec "normal o" . g:DoxygenToolkit_interCommentTag . g:DoxygenToolkit_briefTag_pre mark d ! exec "normal o" . "//" . g:DoxygenToolkit_blockFooter exec "normal `d" " Class definition, let's start with brief tag *************** *** 374,380 **** endif endwhile if ( l:returnFlag >= 1 ) ! exec "normal o" . g:DoxygenToolkit_interCommentTag exec "normal o" . g:DoxygenToolkit_interCommentTag . g:DoxygenToolkit_returnTag endif --- 370,376 ---- endif endwhile if ( l:returnFlag >= 1 ) ! " exec "normal o" . g:DoxygenToolkit_interCommentTag exec "normal o" . g:DoxygenToolkit_interCommentTag . g:DoxygenToolkit_returnTag endif *************** *** 434,440 **** " Add blank line if necessary if ( l:argList != 0 ) ! exec "normal `do" . g:DoxygenToolkit_interCommentTag endif " move the cursor to the correct position (after brief tag) --- 430,436 ---- " Add blank line if necessary if ( l:argList != 0 ) ! " exec "normal `do" . g:DoxygenToolkit_interCommentTag endif " move the cursor to the correct position (after brief tag) *************** *** 505,511 **** let l:date = strftime("%Y-%m-%d") exec "normal o" . g:DoxygenToolkit_interCommentTag . g:DoxygenToolkit_dateTag . l:date if ( g:DoxygenToolkit_endCommentTag == "" ) ! exec "normal o" . g:DoxygenToolkit_interCommentTag else exec "normal o" . g:DoxygenToolkit_endCommentTag endif --- 501,507 ---- let l:date = strftime("%Y-%m-%d") exec "normal o" . g:DoxygenToolkit_interCommentTag . g:DoxygenToolkit_dateTag . l:date if ( g:DoxygenToolkit_endCommentTag == "" ) ! " exec "normal o" . g:DoxygenToolkit_interCommentTag else exec "normal o" . g:DoxygenToolkit_endCommentTag endif
実際に使ってみました。以下のような関数があったとして...
>
int hoge(int a, char b)
{
return 0;
}
先頭の行にキャレットがあるときに :Dox とすると:
//=========================================================================== //! //! @param[in] a //! @param[in] b //! @return //=========================================================================== int hoge(int a, char b) { return 0; }
といった感じのコメントを挿入してくれます。関数に戻り値がない場合は @return は挿入されません。
Vim script は簡単に書けていいなあ。 Lisp はまだ書けない……。