[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master c17ecd2dcd2: syncdoc-type-hierarchy.el: Sort and remove `comp` de
From: |
Stefan Monnier |
Subject: |
master c17ecd2dcd2: syncdoc-type-hierarchy.el: Sort and remove `comp` dependency |
Date: |
Sun, 10 Mar 2024 15:12:11 -0400 (EDT) |
branch: master
commit c17ecd2dcd27b73d673df51ce66f4b188afff6db
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>
syncdoc-type-hierarchy.el: Sort and remove `comp` dependency
* admin/syncdoc-type-hierarchy.el: Delay loading `org-table` so as
not to "pollute" the table with Org-specific types.
(syncdoc-all-types): Sort the types topologically from the root.
(syncdoc-hierarchy): Use `cl--class-parents` instead if
`comp--direct-supertypes` so we don't depend on `comp-cstr`.
(syncdoc-make-type-table): Sort the table so supertypes always come before
their subtypes.
(syncdoc-make-type-table): Require `org-table` here.
* doc/lispref/elisp_type_hierarchy.jpg:
* doc/lispref/elisp_type_hierarchy.txt: Refresh.
---
admin/syncdoc-type-hierarchy.el | 26 +++++++++-----
doc/lispref/elisp_type_hierarchy.jpg | Bin 345570 -> 288444 bytes
doc/lispref/elisp_type_hierarchy.txt | 66 +++++++++++++++++------------------
3 files changed, 50 insertions(+), 42 deletions(-)
diff --git a/admin/syncdoc-type-hierarchy.el b/admin/syncdoc-type-hierarchy.el
index e14d7fb54e1..bfbbbc45aa4 100644
--- a/admin/syncdoc-type-hierarchy.el
+++ b/admin/syncdoc-type-hierarchy.el
@@ -35,7 +35,6 @@
;;; Code:
(require 'cl-lib)
-(require 'org-table)
(defconst syncdoc-file (or (macroexp-file-name) buffer-file-name))
@@ -51,21 +50,24 @@
(when (cl-find-class type)
(push type res)))
obarray)
- res)
+ (nreverse
+ (merge-ordered-lists
+ (sort
+ (mapcar (lambda (type) (cl--class-allparents (cl-find-class type)))
+ res)
+ (lambda (ts1 ts2) (> (length ts1) (length ts2)))))))
"List of all types.")
-(declare-function 'comp--direct-supertypes "comp-cstr.el")
-
(defconst syncdoc-hierarchy
(progn
;; Require it here so we don't load it before `syncdoc-all-types' is
;; computed.
- (require 'comp-cstr)
(cl-loop
- with comp-ctxt = (make-comp-cstr-ctxt)
with h = (make-hash-table :test #'eq)
for type in syncdoc-all-types
- do (puthash type (comp--direct-supertypes type) h)
+ do (puthash type (mapcar #'cl--class-name
+ (cl--class-parents (cl-find-class type)))
+ h)
finally return h)))
(defun syncdoc-insert-dot-content (rankdir)
@@ -90,10 +92,14 @@
(dolist (parent parents)
(push type (alist-get parent subtypes))))
syncdoc-hierarchy)
- (cl-loop for (type . children) in (reverse subtypes)
+ (sort subtypes
+ (lambda (x1 x2)
+ (< (length (memq (car x2) syncdoc-all-types))
+ (length (memq (car x1) syncdoc-all-types)))))
+ (cl-loop for (type . children) in subtypes
do (insert "|" (symbol-name type) " |")
do (cl-loop with x = 0
- for child in (reverse children)
+ for child in children
for child-len = (length (symbol-name child))
when (> (+ x child-len 2) 60)
do (progn
@@ -102,6 +108,8 @@
do (insert (symbol-name child) " ")
do (cl-incf x (1+ child-len)) )
do (insert "\n")))
+ (require 'org-table)
+ (declare-function 'org-table-align "org")
(org-table-align)))
(defun syncdoc-update-type-hierarchy0 ()
diff --git a/doc/lispref/elisp_type_hierarchy.jpg
b/doc/lispref/elisp_type_hierarchy.jpg
index a2e14490dfa..386954e1007 100644
Binary files a/doc/lispref/elisp_type_hierarchy.jpg and
b/doc/lispref/elisp_type_hierarchy.jpg differ
diff --git a/doc/lispref/elisp_type_hierarchy.txt
b/doc/lispref/elisp_type_hierarchy.txt
index d1be8f56c72..bb93cd831b9 100644
--- a/doc/lispref/elisp_type_hierarchy.txt
+++ b/doc/lispref/elisp_type_hierarchy.txt
@@ -1,33 +1,33 @@
-| Type | Derived Types
|
-|---------------------+------------------------------------------------------------|
-| atom | mutex record font-spec frame number-or-marker
|
-| | tree-sitter-compiled-query tree-sitter-node
font-entity |
-| | tree-sitter-parser hash-table window-configuration
|
-| | function user-ptr overlay array process font-object
symbol |
-| | obarray condvar buffer terminal thread window
|
-| | native-comp-unit
|
-| cl-structure-object | xref-elisp-location org-cite-processor
cl--generic-method |
-| | cl--random-state register-preview-info cl--generic
|
-| | cl--class cl-slot-descriptor uniquify-item registerv
|
-| | isearch--state cl--generic-generalizer
lisp-indent-state |
-| t | sequence atom
|
-| compiled-function | subr byte-code-function
|
-| integer | fixnum bignum
|
-| symbol | symbol-with-pos keyword boolean
|
-| accessor | oclosure-accessor
|
-| oclosure | advice cconv--interactive-helper advice--forward
accessor |
-| | save-some-buffers-function cl--generic-nnm
|
-| cons | ppss decoded-time
|
-| cl--class | cl-structure-class oclosure--class built-in-class
|
-| subr | subr-primitive subr-native-elisp
|
-| array | string vector bool-vector char-table
|
-| number | float integer
|
-| number-or-marker | integer-or-marker number
|
-| function | oclosure compiled-function interpreted-function
|
-| | module-function
|
-| sequence | list array
|
-| integer-or-marker | integer marker
|
-| boolean | null
|
-| list | null cons
|
-| record | cl-structure-object
|
-| vector | timer
|
+| Type | Derived Types
|
+|---------------------+-----------------------------------------------------------|
+| t | sequence atom
|
+| atom | number-or-marker array record symbol function
|
+| | window-configuration font-object font-entity mutex
|
+| | tree-sitter-node buffer overlay tree-sitter-parser
thread |
+| | font-spec native-comp-unit tree-sitter-compiled-query
|
+| | terminal window frame hash-table user-ptr obarray
condvar |
+| | process
|
+| sequence | array list
|
+| list | null cons
|
+| function | oclosure compiled-function module-function
|
+| | interpreted-function
|
+| symbol | boolean symbol-with-pos keyword
|
+| compiled-function | subr byte-code-function
|
+| oclosure | accessor advice--forward cconv--interactive-helper
|
+| | cl--generic-nnm advice save-some-buffers-function
|
+| record | cl-structure-object
|
+| cl-structure-object | cl--class lisp-indent-state cl--random-state registerv
|
+| | xref-elisp-location isearch--state cl-slot-descriptor
|
+| | cl--generic-generalizer uniquify-item
cl--generic-method |
+| | register-preview-info cl--generic
|
+| cons | ppss decoded-time
|
+| array | vector string char-table bool-vector
|
+| number-or-marker | number integer-or-marker
|
+| integer-or-marker | integer marker
|
+| number | integer float
|
+| cl--class | built-in-class cl-structure-class oclosure--class
|
+| subr | subr-native-elisp subr-primitive
|
+| accessor | oclosure-accessor
|
+| vector | timer
|
+| boolean | null
|
+| integer | fixnum bignum
|
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master c17ecd2dcd2: syncdoc-type-hierarchy.el: Sort and remove `comp` dependency,
Stefan Monnier <=