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