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