Подтвердить что ты не робот

Emacs + C/С++ + Doxygen: альтернатива доксимакам? С yasnippet?

Я хотел бы использовать doxygen для генерации документации кода (функций) в файлах .c или .cc с помощью Emacs. Я нашел doxymacs, но, похоже, он больше не поддерживается (последняя версия 2007), и я также не нашел способ обновить документацию о функции, если изменить имя одного из параметров функции ( "к сожалению" Я привык к великолепным сценариям Roxygen для .R, которые могут делать все приятные вещи, даже вставляя документацию прямо перед функцией, когда точка находится где-то в функции).

Я нашел этот, но это кажется не очень полезным. Однако здесь есть пример , как использовать yasnippets. Кто-нибудь написал yasnippet для заголовков doxygen? Тем не менее, это не будет обновлять параметры, если имя функции изменяется. Есть ли "лучший" способ работать с doxygen в Emacs? Я бы предположил, что существует довольно много программистов на C/С++, которые работают с Emacs, и я бы предположил, что для документации кода должен быть хороший инструмент/подход.

Обновление

Я также нашел this. Это чисто основано на yasnippet (еще не пробовал, хотя).

4b9b3361

Ответ 1

Я использую следующее:

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

Ответ 2

1. Создайте doxygen из Emacs

Какой инструмент вы используете для компиляции? CMake? Autotools? Scons?

Как только я работал с CMake, мы создали цель для создания документации с помощью doxygen.

Что-то вроде this.

Затем вам придется скомпилировать следующее:

make doc

Но это касается только первой части вашего вопроса, документации перед каждой функцией она будет сделана вручную. Я попытаюсь интегрировать это решение с yasnippet.