2012-07-04 2 views
17

Desidero utilizzare doxygen per generare la documentazione del codice (delle funzioni) nei file .c o .cc con Emacs. Ho trovato doxymacs, ma sembra non essere più mantenuto (ultima versione 2007) e inoltre non ho trovato un modo per aggiornare la documentazione di una funzione se cambio il nome di uno dei parametri della funzione ("purtroppo", Sono abituato al grande Roxygen per gli script .R che possono fare tutte le cose belle, anche inserendo una documentazione proprio prima di una funzione quando il punto è da qualche parte nella funzione).Emacs + C/C++ + Doxygen: alternativa ai doxymacs? Con yasnippet?

Ho trovato this, ma non sembra molto utile. Tuttavia, vi è un esempio here come utilizzare yasnippets. Qualcuno ha scritto un yasnippet per le intestazioni di doxygen? Tuttavia, non aggiornerebbe i parametri se il nome della funzione dovesse cambiare. Esiste un modo "migliore" per lavorare con doxygen in Emacs? Presumo che ci siano un bel po 'di programmatori C/C++ che funzionano con Emacs e suppongo che ci dovrebbe essere un buon strumento/approccio per la documentazione del codice.

Aggiornamento

Ho trovato anche this. È puramente basato su yasnippet (non l'ho ancora provato, però).

risposta

8

Io uso il seguente:

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

Caro Jonathan, grazie per l'aiuto. Sembra bello. Nella parte superiore di http://permalink.gmane.org/gmane.emacs.yasnippet.devel/555 esiste una versione che non richiede doxymacs. Non ho provato, però. –

1

1. Generare doxygen da Emacs

Che tipo di strumento stai usando per la compilazione? CMake? Autotools? Scons?

Una volta ho lavorato con CMake e abbiamo creato un obiettivo per generare documentazione con doxygen.

Qualcosa come this.

Poi si dovrà compilare in questo modo:

make doc 

Ma questo riguarda solo la prima parte della sua domanda, la documentazione prima di ogni funzione che verrà effettuata manualmente. Cercherò di integrare questa soluzione con yasnippet.

+0

Grazie per l'aiuto. Non compilo i file da solo. Li uso all'interno di R e R compila i file per me. –