Skip to content

Instantly share code, notes, and snippets.

@johnfredcee
Created December 2, 2012 08:26
Show Gist options
  • Select an option

  • Save johnfredcee/4187722 to your computer and use it in GitHub Desktop.

Select an option

Save johnfredcee/4187722 to your computer and use it in GitHub Desktop.
Generate C++ function comment..
(defun is-argument-list-delimiter (chr)
(or (= chr ?\,) (= chr ?\)) (= chr ?\=)))
(defun extract-c-arguments ()
(interactive)
(let
((open-brace
(progn (beginning-of-line)
(search-forward "(")
(backward-char)
(point-marker)))
(close-brace
(progn (c-forward-sexp)
(point-marker)))
(arguments nil)
(prev-delimiter 0))
(goto-char open-brace)
(while (not (= (char-after) ?\;))
(let
((arg-start (point-marker)))
(c-forward-token-2)
(when (is-argument-list-delimiter (char-after))
(when (not (= prev-delimiter ?\=))
(setq arguments (append arguments (list (buffer-substring-no-properties (marker-position arg-start) (point)))))
(setq prev-delimiter (char-after))))))
arguments))
(defun insert-padded-string (count str)
(insert-string (make-string count ?\x20))
(insert-string str))
(defun insert-c-function-comment ()
(interactive)
(let ((arguments
(prog2
(beginning-of-line)
(extract-c-arguments)
(beginning-of-line))))
(forward-whitespace 1)
(let ((comment-column (current-column)))
(beginning-of-line)
(open-line 1)
(insert-padded-string comment-column "/**")
(open-line 1)
(next-line)
(mapcar (lambda (x) (insert-padded-string (+ tab-width comment-column) "@param ") (insert-tab) (insert-string x) (open-line 1) (next-line)) arguments)
(insert-padded-string (+ tab-width comment-column) "@return ")
(insert-tab)
(open-line 1)
(next-line)
(insert-padded-string comment-column "**/"))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment