summaryrefslogtreecommitdiff
path: root/etc
diff options
context:
space:
mode:
authorAndrea Corallo <acorallo@gnu.org>2024-02-19 17:40:04 +0100
committerAndrea Corallo <acorallo@gnu.org>2024-02-19 17:47:37 +0100
commit0393bfdc912912e3368b786d062894f3069d210b (patch)
tree6b57dcb5355fa113b33083c661d9414c647aa88e /etc
parent24e8fceb960e0b3b7e270211bd7f460c4c871008 (diff)
downloademacs-0393bfdc912912e3368b786d062894f3069d210b.tar.gz
Make type hierarchy textual representation a table
* etc/syncdoc-type-hierarchy.el (syncdoc-make-type-table): New function. (syncdoc-update-type-hierarchy): Make use of. * doc/lispref/type_hierarchy.txt: Regenerate.
Diffstat (limited to 'etc')
-rw-r--r--etc/syncdoc-type-hierarchy.el25
1 files changed, 20 insertions, 5 deletions
diff --git a/etc/syncdoc-type-hierarchy.el b/etc/syncdoc-type-hierarchy.el
index eebb092abae..cd0cae2f954 100644
--- a/etc/syncdoc-type-hierarchy.el
+++ b/etc/syncdoc-type-hierarchy.el
@@ -35,6 +35,7 @@
;;; Code:
(require 'cl-lib)
+(require 'org-table)
(eval-and-compile
(defconst syncdoc-lispref-dir (concat (file-name-directory
@@ -55,6 +56,23 @@
(goto-char (point-max))
(insert "}\n"))
+(defun syncdoc-make-type-table (file)
+ (with-temp-file file
+ (insert "|Type| Derived Types|\n|-\n")
+ (cl-loop for (type . children) in cl--type-hierarchy
+ do (insert "|" (symbol-name type) " |")
+ do (cl-loop with x = 0
+ for child in children
+ for child-len = (length (symbol-name child))
+ when (> (+ x child-len 2) 60)
+ do (progn
+ (insert "|\n||")
+ (setq x 0))
+ do (insert (symbol-name child) " ")
+ do (cl-incf x (1+ child-len)) )
+ do (insert "\n"))
+ (org-table-align)))
+
(defun syncdoc-update-type-hierarchy ()
"Update the type hierarchy representation used by the elisp manual."
(interactive)
@@ -63,10 +81,7 @@
(call-process-region nil nil "dot" t (current-buffer) nil "-Tjpg" "-o"
(expand-file-name "type_hierarchy.jpg"
syncdoc-lispref-dir)))
- (with-temp-buffer
- (syncdoc-insert-dot-content "TB")
- (call-process-region nil nil "graph-easy" t (current-buffer) nil "--output"
- (expand-file-name "type_hierarchy.txt"
- syncdoc-lispref-dir))))
+ (syncdoc-make-type-table (expand-file-name "type_hierarchy.txt"
+ syncdoc-lispref-dir)))
;;; syncdoc-type-hierarchy.el ends here