diff options
| author | benj <benj@rse8.com> | 2018-03-16 12:39:17 -0700 |
|---|---|---|
| committer | benj <benj@rse8.com> | 2018-03-16 12:39:17 -0700 |
| commit | 67b696a4d68d98fff8158edf9c11b5d5d24d3fa7 (patch) | |
| tree | 8512e9b385ed17883fd8ee8842549bb0d3d7ec31 /snippets/doxygen | |
| parent | 5dd18d1598b22000b60a329c6b1cc18896c5ced6 (diff) | |
| parent | c38ef385a9af288cf2d2ff0f306b6b2176fcf47d (diff) | |
| download | emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.tar emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.tar.gz emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.tar.bz2 emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.tar.lz emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.tar.xz emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.tar.zst emacs-67b696a4d68d98fff8158edf9c11b5d5d24d3fa7.zip | |
Merge remote-tracking branch 'refs/remotes/origin/master'
Diffstat (limited to 'snippets/doxygen')
| -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"))) |
