2012-07-04 30 views
17

Tôi muốn sử dụng doxygen để tạo tài liệu mã (chức năng) trong các tệp .c hoặc .cc với Emacs. Tôi tìm thấy doxymacs, nhưng có vẻ như không còn được duy trì nữa (phiên bản mới nhất 2007) và tôi cũng không tìm cách cập nhật tài liệu của hàm nếu tôi thay đổi tên của một trong các thông số của hàm ("không may", Tôi đã từng sử dụng các tập lệnh Roxygen tuyệt vời cho các mã .R có thể làm tất cả mọi thứ tốt đẹp, thậm chí chèn tài liệu ngay trước một hàm khi điểm ở đâu đó trong hàm).Emacs + C/C++ + Doxygen: Thay thế cho doxymac? Với yasnippet?

Tôi tìm thấy this, nhưng có vẻ như không hữu ích lắm. Tuy nhiên, có một ví dụ here cách sử dụng yasnippets. Có ai đã viết một đoạn mã cho các tiêu đề doxygen không? Tuy nhiên, nó sẽ không cập nhật các tham số nếu tên hàm thay đổi. Có cách nào "tốt hơn" để làm việc với doxygen trong Emacs không? Tôi cho rằng có khá nhiều lập trình viên C/C++ làm việc với Emacs và tôi đoán rằng cần phải có một công cụ tốt/cách tiếp cận cho tài liệu mã.

Cập nhật

Tôi cũng thấy this. Nó hoàn toàn dựa trên yasnippet (mặc dù chưa thử nó).

Trả lời

8

tôi sử dụng như sau:

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

Kính gửi Jonathan, cảm ơn vì đã giúp đỡ. Trông tôt đây. Ở đầu http://permalink.gmane.org/gmane.emacs.yasnippet.devel/555 có một phiên bản không yêu cầu doxymac. Tuy nhiên, chưa thử. –

1

1. Tạo doxygen từ Emacs

Những loại công cụ mà bạn đang sử dụng để biên dịch? CMake? Autotools? Scons?

Khi tôi đã làm việc với CMake và chúng tôi đã tạo mục tiêu để tạo tài liệu với doxygen.

Thứ gì đó như this.

Sau đó, bạn sẽ cần phải biên dịch như thế này:

make doc 

Nhưng điều này chỉ bao gồm phần đầu của câu hỏi của bạn, tài liệu trước khi mỗi chức năng nó sẽ được thực hiện bằng tay. Tôi sẽ cố gắng tích hợp giải pháp này với yasnippet.

+0

Cảm ơn bạn đã trợ giúp. Tôi không tự biên dịch các tập tin. Tôi sử dụng chúng trong R và R biên dịch các tập tin cho tôi. –

Các vấn đề liên quan