2012-07-04 17 views
17

doxygenを使用して、.cまたは.ccのEmacsでファイルの関数ドキュメントを生成したいと考えています。私はdoxymacsを見つけましたが、それはもはや維持されていないようです(最新バージョン2007)。また、関数のパラメータの名前を変更すると、関数のドキュメントを更新する方法も見つけられませんでした( "残念ながら"私は偉大なRoxygen.Rのすべての素晴らしいことをすることができますスクリプトの場合は、関数の直前にドキュメントが挿入されているポイントは、関数内のどこか)に慣れています。Emacs + C/C++ + Doxygen:doxymacsの代わりに? yasnippetで?

thisが見つかりましたが、それほど有用ではないようです。ただし、yasnippetsの使用方法はhereです。誰もdoxygenヘッダーのためのyasnippetを書いていますか?それでも、関数名が変更されてもパラメータは更新されません。 Emacsでdoxygenを使う "良い"方法はありますか?私は、Emacsで動作するC/C++プログラマがかなりいると想定しており、コードド​​キュメントのための優れたツール/アプローチがあるはずです。

更新

私もthisを見つけました。それは純粋にヤスニペットに基づいています(まだ試していませんが)。

答えて

8

私は次のようにします。

# -*- mode: snippet -*- 
# name: cc-doxygen 
# key: dox 
# type: command 
# contributor: Jonathan Kotta <[email protected]> 
# -- 
(let* ((next-func-alist (doxymacs-find-next-func)) 
     (func-name (cdr (assoc 'func next-func-alist))) 
     (params-list (cdr (assoc 'args next-func-alist))) 
     (return-name (cdr (assoc 'return next-func-alist))) 
     (snippet-text "") 
     (idx 1)) 
    (setq snippet-text (format "/**\n * ${1:%s}\n * \n" func-name)) 
    (setq idx 2) 
    (dolist (param params-list) 
    (unless (string= param "this") 
     (setq snippet-text (concat snippet-text 
           (format " * \\param %s ${%d:}\n" param idx))) 
     (setq idx (+ 1 idx)))) 
    (when (and return-name (not (string= return-name "void"))) 
    (setq snippet-text (concat snippet-text 
           (format " * \\return ${%d:%s}\n" idx return-name)))) 
    (setq snippet-text (concat snippet-text " */")) 
    (yas/expand-snippet snippet-text)) 
+0

親愛なるジョナサン様、お手伝いをありがとうございます。それはよさそうだ。 http://permalink.gmane.org/gmane.emacs.yasnippet.devel/555の上部には、doxymacsを必要としないバージョンがあります。しかし、それを試していない。 –

1

1.あなたがコンパイルするために使用しているツールの種類のEmacs

からdoxygenを生成? CMake?オートツール?スカンス?

私はCMakeと一緒に作業し、doxygenでドキュメントを生成するためのターゲットを作成しました。

thisのようなものです。

次に、あなたは次のようにコンパイルする必要があります。

make doc 

しかし、これはあなたの質問の最初の部分、それは手動で行われる各関数の前にドキュメントをカバーしています。私はyasnippetとこのソリューションを統合しようとします。

+0

助けてくれてありがとう。私は自分でファイルをコンパイルしません。私はそれらをRの中で使い、Rは私のためにファイルをコンパイルします。 –

関連する問題