2012-07-04 22 views
17

Me gustaría usar doxygen para generar documentación de código (de funciones) en los archivos .c o .cc con Emacs. Encontré doxymacs, pero parece que ya no se mantiene (última versión 2007) y tampoco encontré una manera de actualizar la documentación de una función si cambio el nombre de uno de los parámetros de la función ("desafortunadamente", Estoy acostumbrado a los grandes Roxygen para los scripts .R que pueden hacer todas las cosas buenas, incluso insertando una documentación justo antes de una función cuando el punto está en alguna parte de la función).Emacs + C/C++ + Doxygen: ¿alternativa a doxymacs? Con yasnippet?

Encontré this, pero parece que no es muy útil. Sin embargo, hay un ejemplo here cómo usar yasnippets. ¿Alguien ha escrito un yasnippet para encabezados doxygen? Aún así, no actualizaría los parámetros si el nombre de la función cambia. ¿Hay alguna forma "mejor" de trabajar con doxygen en Emacs? Asumiría que hay muchos programadores de C/C++ que trabajan con Emacs y supongo que debería haber una buena herramienta/enfoque para la documentación del código.

actualización

también encontré this. Está basado puramente en yasnippet (aunque aún no lo he probado).

Respuesta

8

utilizo el siguiente:

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

Estimado Jonathan, gracias por ayudarme. Eso se ve bien. En la parte superior de http://permalink.gmane.org/gmane.emacs.yasnippet.devel/555 hay una versión que no requiere doxymacs. No lo he probado, sin embargo. –

1

1. Generar doxygen de Emacs

¿Qué tipo de herramienta se está utilizando para la compilación? CMake? Autotools? Scons?

Una vez trabajé con CMake y creamos un objetivo para generar documentación con doxygen.

Algo así como this.

A continuación, tendrá que compilar la siguiente manera:

make doc 

Pero esto sólo cubre la primera parte de su pregunta, la documentación antes de cada función se hará manualmente. Intentaré integrar esta solución con yasnippet.

+0

Gracias por ayudar. Yo no compilo los archivos yo mismo. Los uso dentro de R y R compila los archivos para mí. –