Advertisement
Guest User

Untitled

a guest
Jan 8th, 2013
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 1.38 KB | None | 0 0
  1.  (defun fetch-defuns (file)
  2.    (save-excursion
  3.      (goto-char (point-min))
  4.      (let (sexp
  5.           (defuns nil)
  6.           (defmacros nil))
  7.        (condition-case nil
  8.           (while t
  9.             (setq sexp (read file))
  10.             (when (listp sexp)
  11.               (case (car sexp)
  12.                 (defun (push (cons (cadr sexp) (doc-if-any sexp)) defuns))
  13.                 (defmacro (push (cons (cadr sexp) (doc-if-any sexp)) defmacros)))))
  14.         (error nil))
  15.        ;; reverse the reversed defuns
  16.        (setq defuns (reverse defuns))
  17.        (generate-docs defuns))))
  18.  
  19.  (defun doc-if-any (sexp)
  20.    "search for the doc"
  21.    (when (stringp (cadddr sexp))
  22.      (cadddr sexp)))
  23.  
  24. (defun generate-docs (defuns)
  25.    "generate a simple org with the docs"
  26.        (mapconcat
  27.         (lambda (x)
  28.            (format "\n* %s\n  %s"
  29.                           (car x) (or (cdr x) "-undocumented-")))
  30.         defuns "\n"))
  31.  
  32. (defun display-defuns ()
  33.   "Display the defuns."
  34.   (interactive)
  35.   (let* ((out-buf (format "*Docs for: %s*" (file-name-nondirectory buffer-file-name)))
  36.          (orig-buf (current-buffer)))
  37.     (get-buffer-create out-buf)
  38.     (save-excursion
  39.       (goto-char (point-min))
  40.       (with-current-buffer out-buf
  41.         (erase-buffer)
  42.         (insert (fetch-defuns orig-buf))
  43.         (org-mode)
  44.         (goto-char (point-min))))
  45.     (display-buffer out-buf)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement