From c38ef385a9af288cf2d2ff0f306b6b2176fcf47d Mon Sep 17 00:00:00 2001 From: benj Date: Wed, 14 Mar 2018 01:39:34 -0700 Subject: added doxygen function comment and auto-insert snippets for c-mode --- snippets/doxygen/doxycomments | 48 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 snippets/doxygen/doxycomments (limited to 'snippets/doxygen/doxycomments') 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"))) -- cgit v1.2.3