diff options
| author | benj <benj@rse8.com> | 2018-03-14 01:39:34 -0700 |
|---|---|---|
| committer | benj <benj@rse8.com> | 2018-03-14 01:39:34 -0700 |
| commit | c38ef385a9af288cf2d2ff0f306b6b2176fcf47d (patch) | |
| tree | 6fb29f8aa6d2d25fb3b6a91d973e0267028bb260 /snippets/doxygen/doxycomments | |
| parent | 4d692027106c9352b9d64206970006c6ac6ab743 (diff) | |
| download | emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.tar emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.tar.gz emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.tar.bz2 emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.tar.lz emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.tar.xz emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.tar.zst emacs-c38ef385a9af288cf2d2ff0f306b6b2176fcf47d.zip | |
added doxygen function comment and auto-insert snippets for c-mode
Diffstat (limited to 'snippets/doxygen/doxycomments')
| -rw-r--r-- | snippets/doxygen/doxycomments | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/snippets/doxygen/doxycomments b/snippets/doxygen/doxycomments new file mode 100644 index 0000000..94209bc --- /dev/null +++ b/snippets/doxygen/doxycomments @@ -0,0 +1,48 @@ +# -*- mode: snippet -*- +# name: doxcomments +# key: dox +# type: command +# -- +;; Command to generate doxygen comments for c functions + +(defun flatten (ls) + "Implements standard flatten function" + (cond + ((atom ls) (list ls)) + ((null (cdr ls)) (flatten (car ls))) + (t (append (flatten (car ls)) (flatten (cdr ls)))))) + +(defun find-retval () + "Returns the return value of the next parsed function" + (interactive) + (let ((struct-type "struct")) + (search-forward "(" nil t) + (move-beginning-of-line nil) + (let ((return-type (thing-at-point 'symbol))) + (if (string= return-type struct-type) + "NOT_IMPLEMENTED" + return-type)))) + +(defun find-args () + "Returns a list of function args for the next parsed function" + (interactive) + (let* ((struct-type "struct") + (start (search-forward "(" nil t)) + (end (search-forward ")" nil t)) + (args-string (buffer-substring-no-properties start (1- end))) + (args (mapcar 'string-trim-left (split-string args-string "," t)))) + (mapcar (lambda (x) (car (reverse x))) (mapcar 'split-string args)))) + +(let* ((retval (find-retval)) + (args (find-args)) + (args-len (length args)) + (brief "@brief $1\n *") + (params (mapcar (lambda (x) (format "@param: %s ${%d:}" (cdr x) (car x))) + (mapcar* 'cons + (mapcar '1+ (number-sequence 1 args-len)) + args))) + (retval (format "@return %s $0" retval)) + (snippet-text (mapconcat 'identity (flatten (list "/**" brief params (concat "\n * " retval))) + "\n * "))) + (move-beginning-of-line nil) + (yas-expand-snippet (concat snippet-text "\n*/\n"))) |
