Fix tp-group-props to handle both old and new formats, update remaining documentation examples
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
This commit is contained in:
parent
5f55263eb2
commit
5667881765
@ -1547,7 +1547,8 @@ Get properties for a layer or all layers in a group.
|
|||||||
(setq tp-layer-groups nil)
|
(setq tp-layer-groups nil)
|
||||||
(define-tp layer1 () '(face bold))
|
(define-tp layer1 () '(face bold))
|
||||||
(define-tp layer2 () '(face italic))
|
(define-tp layer2 () '(face italic))
|
||||||
(tp-define-layer-group 'my-group 'layer1 'layer2)
|
(define-tps my-group ()
|
||||||
|
'layer1 'layer2)
|
||||||
(length (tp-group-props 'my-group)))
|
(length (tp-group-props 'my-group)))
|
||||||
;; => 2
|
;; => 2
|
||||||
```
|
```
|
||||||
@ -1579,7 +1580,8 @@ Remove layer or group definition.
|
|||||||
(setq tp-layer-alist nil)
|
(setq tp-layer-alist nil)
|
||||||
(setq tp-layer-groups nil)
|
(setq tp-layer-groups nil)
|
||||||
(define-tp l1 () '(face bold))
|
(define-tp l1 () '(face bold))
|
||||||
(tp-define-layer-group 'my-group 'l1)
|
(define-tps my-group ()
|
||||||
|
'l1)
|
||||||
(tp-undefine-group 'my-group)
|
(tp-undefine-group 'my-group)
|
||||||
(assoc 'my-group tp-layer-groups))
|
(assoc 'my-group tp-layer-groups))
|
||||||
;; => nil
|
;; => nil
|
||||||
|
|||||||
21
tp.el
21
tp.el
@ -2865,11 +2865,26 @@ Recursively expands any nested layer names in the returned plist."
|
|||||||
|
|
||||||
(defun tp-group-props (group-name &optional include-tp-name)
|
(defun tp-group-props (group-name &optional include-tp-name)
|
||||||
"Return list of properties for all layers in GROUP-NAME.
|
"Return list of properties for all layers in GROUP-NAME.
|
||||||
If INCLUDE-TP-NAME is non-nil, each layer's props will include tp-name."
|
If INCLUDE-TP-NAME is non-nil, each layer's props will include tp-name.
|
||||||
(when-let ((layers (cdr (assoc group-name tp-layer-groups))))
|
Handles both old format (list of layer names) and new unified format
|
||||||
|
from `define-tps` (parameterized groups store ARGLIST and BODY-FORM)."
|
||||||
|
(when-let ((entry (cdr (assoc group-name tp-layer-groups))))
|
||||||
|
;; Check if it's the unified format from define-tps (ARGLIST BODY-FORM)
|
||||||
|
;; Unified format: (ARGLIST BODY-FORM) where ARGLIST is a list of symbols or nil
|
||||||
|
;; Old format: (layer1 layer2 ...) where each element is a symbol referring to a layer
|
||||||
|
(cond
|
||||||
|
;; Unified parameterized format: (ARGLIST BODY-FORM) with non-nil ARGLIST
|
||||||
|
((and (= (length entry) 2)
|
||||||
|
(listp (car entry))
|
||||||
|
(not (null (car entry)))
|
||||||
|
(cl-every #'symbolp (car entry)))
|
||||||
|
;; Parameterized group - can't get props without argument
|
||||||
|
nil)
|
||||||
|
;; Old format or non-parameterized define-tps: list of layer names
|
||||||
|
(t
|
||||||
(mapcar (lambda (layer)
|
(mapcar (lambda (layer)
|
||||||
(tp-layer-props layer include-tp-name))
|
(tp-layer-props layer include-tp-name))
|
||||||
layers)))
|
entry)))))
|
||||||
|
|
||||||
(defun tp--is-layer-name-p (sym)
|
(defun tp--is-layer-name-p (sym)
|
||||||
"Return non-nil if SYM is a defined layer, parameterized layer, or group name."
|
"Return non-nil if SYM is a defined layer, parameterized layer, or group name."
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user