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)
							 | 
						||
| 
								 | 
							
								        "")))))
							 |