# -*- mode: snippet -*- # name: cc-doxy # key: cc-doxy # type: command # contributors: Alex Murray , Thomas Cushman # -- (unless (and (fboundp 'semantic-current-tag) semantic-mode) (error "Semantic required to use dox snippet")) (let ((tag (senator-next-tag))) (while (or (null tag) (not (semantic-tag-of-class-p tag 'function))) (setq tag (senator-next-tag))) (let* ((name (semantic-tag-name tag)) (attrs (semantic-tag-attributes tag)) (args (plist-get attrs :arguments)) (return-name (plist-get attrs :type)) (idx 1)) (if (listp return-name) (setq return-name (car return-name))) (yas/expand-snippet (format "/** * @brief %s - $1%s%s **/ " name (mapconcat (lambda (x) (format "\n* @param %s - ${%d:Description of %s}" (car x) (incf idx) (car x))) args "\n") (if (and return-name (not (string-equal "void" return-name))) (format "\n* @return ${%d:%s}" (incf idx) return-name) "")))))