blob: 88994b250c0e0f87f7cecec60f32e6390aadde19 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
(defun update-lispdoc-tags ()
(interactive)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "^@c lispfun \\(.+\\)" nil t)
(let ((name (match-string 1)) begin end)
(message "Update lispdoc for function '%s'" name)
(if (re-search-forward (concat "^@defun " name) nil t)
(setq begin (match-beginning 0)))
(if (re-search-forward "^@end defun" nil t)
(setq end (match-end 0)))
(if (and begin end)
(delete-region begin end))
(let* ((sym (or (intern-soft name)
(error "'%s' is not a function!" name)))
(data (symbol-function sym))
(args (pp-to-string (if (listp data)
(cadr data)
(aref data 0))))
(doc (documentation sym)))
(if (or (null doc) (= (length doc) 0))
(message "warning: no documentation available for '%s'" name)
(unless (and begin end)
(insert ?\n ?\n))
(insert (format "@defun %s %s\n" name
(substring args 1 (- (length args) 2))))
(setq begin (point))
(insert doc ?\n)
(save-restriction
(narrow-to-region begin (point))
(goto-char (point-min))
(let ((case-fold-search nil))
(while (re-search-forward "[A-Z][A-Z-]+" nil t)
(replace-match (format "@var{%s}"
(downcase (match-string 0))) t t)))
(goto-char (point-max)))
(insert "@end defun")))))))
(defun chess-undocd-functions ()
(interactive)
(save-excursion
(dolist (func (apropos-internal "^chess-" 'functionp))
(goto-char (point-min))
(unless (search-forward (concat "@c lispfun " (symbol-name func)) nil t)
(message "Missing documentation for '%s'" (symbol-name func))))))
(provide 'lispdoc)
|