37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| # -*- mode: snippet -*-
 | |
| # name: cc-doxy
 | |
| # key: cc-doxy
 | |
| # type: command
 | |
| # contributors: Alex Murray <github.com/alexmurray>, Thomas Cushman <tcushman369@gmail.com>
 | |
| # --
 | |
| (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)
 | |
|         "")))))
 |