2012-07-04 13 views
17

Chciałbym użyć doxygen do generowania dokumentacji kodu (funkcji) w plikach .c lub .cc z Emacsem. Znalazłem doxymacs, ale wydaje się, że już się nie utrzymuję (najnowsza wersja 2007) i nie znalazłem też sposobu na aktualizację dokumentacji funkcji, jeśli zmienię nazwę jednego z parametrów funkcji ("niestety", Jestem przyzwyczajony do świetnych skryptów Roxygen dla .R, które mogą wykonywać wszystkie fajne rzeczy, nawet wstawiając dokumentację tuż przed funkcją, gdy punkt znajduje się gdzieś w funkcji).Emacs + C/C++ + Doxygen: Alternatywa dla doxymaków? Z Yasnippetem?

Znalazłem this, ale wydaje się niezbyt przydatne. Istnieje jednak przykład: here, jak korzystać z yasnippets. Czy ktoś napisał fragment na nagłówki doxygen? Mimo to nie aktualizowałby parametrów, jeśli nazwa funkcji ulegnie zmianie. Czy istnieje jakiś "lepszy" sposób pracy z doxygen w Emacs? Zakładam, że jest całkiem sporo programistów C/C++, którzy pracują z Emacsem i przypuszczam, że powinno być dobre narzędzie/podejście do dokumentacji kodu.

Aktualizacja

Znalazłem również this. Jest czysto oparty na yasnippet (jeszcze go nie wypróbowałem).

Odpowiedz

8

używam następujące:

# -*- 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

Drogi Jonatan, dzięki za pomoc. To wygląda dobrze. Na górze http://permalink.gmane.org/gmane.emacs.yasnippet.devel/555 dostępna jest wersja, która nie wymaga doxymacs. Jednak tego nie próbowałem. –

1

1. Generowanie doxygen z Emacs

Jaki rodzaj narzędzia używasz do kompilacji? CMake? Autotools? Scons?

Kiedyś pracowałem z CMake i stworzyliśmy cel do generowania dokumentacji z doxygen.

Coś takiego jak this.

Potem trzeba będzie skompilować tak:

make doc 

Ale ta obejmuje jedynie pierwszą część Twojego pytania, przed dokumentacji każdej funkcji zostanie ona wykonana ręcznie. Spróbuję zintegrować to rozwiązanie z Yasnippet.

+0

Dzięki za pomoc. Nie kompiluję plików samodzielnie. Używam ich w R i R kompiluje pliki dla mnie. –