Emacs + C/C++ + Doxygen:doxymacs的替代品?有yasnippet?

Mar*_*ert 17 c c++ emacs doxygen

我想使用doxygen在Emacs中生成代码文档(函数).c.cc文件.我发现doxymacs,但似乎不再维护(最新版本2007),如果我更改函数的一个参数的名称,我也没有找到更新函数文档的方法("不幸的是",我已经习惯了极大Roxygen.R脚本,它可以做所有的好东西,一个函数之前的权利,即使插入文档时的点在什么地方功能).

我发现了这个,但似乎不是很有用.然而,有一个例子在这里如何使用yasnippets.有人写过doxygen标题的yasnippet吗?但是,如果函数名称更改,它将不会更新参数.在Emacs中使用doxygen有什么"更好"的方法吗?我认为有很多C/C++程序员可以使用Emacs,我猜想应该有一个很好的代码文档工具/方法.

更新

我也找到了这个.它完全基于yasnippet(尽管还没有尝试过).

jpk*_*tta 8

我使用以下内容:

# -*- mode: snippet -*-
# name: cc-doxygen
# key: dox
# type: command
# contributor: Jonathan Kotta <jpkotta@gmail.com>
# --
(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))
Run Code Online (Sandbox Code Playgroud)