summaryrefslogtreecommitdiff
path: root/snippets/doxygen
diff options
context:
space:
mode:
authorbenj <benj@rse8.com>2018-03-16 12:39:17 -0700
committerbenj <benj@rse8.com>2018-03-16 12:39:17 -0700
commit67b696a4d68d98fff8158edf9c11b5d5d24d3fa7 (patch)
tree8512e9b385ed17883fd8ee8842549bb0d3d7ec31 /snippets/doxygen
parent5dd18d1598b22000b60a329c6b1cc18896c5ced6 (diff)
parentc38ef385a9af288cf2d2ff0f306b6b2176fcf47d (diff)
downloademacs-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/doxycomments48
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")))