Update documentation with parameterized layer group examples

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2026-01-04 13:25:54 +00:00
parent 93f61e5ba0
commit 7e0a8573da
2 changed files with 76 additions and 5 deletions

View File

@ -1460,6 +1460,28 @@ Define multiple related custom text properties. The name does not need to be quo
(tp-set 1 6 'tp-moon-phases)
```
**Format 2 - Parameterized (with single argument):**
```elisp
;; First define parameterized individual layers
(define-tp tp-color1 (color)
`(face (:foreground ,color)))
(define-tp tp-color2 (color)
`(face (:foreground ,color)))
(define-tp tp-bg ()
'(face (:background "green")))
;; Define parameterized layer group referencing the layers above
(define-tps tp-themed-status (color)
`(tp-color1 ,color) ;; Use group parameter
'(tp-color2 "red") ;; Use fixed parameter
'tp-bg) ;; Reference non-parameterized layer
;; Usage - sets multi-layer properties:
(tp-set "emacs" 'tp-themed-status "orange")
;; Result: Three layers stacked, tp-color1 is top layer with "orange" color
```
**Supported layer definition formats within the group:**
1. **Anonymous layers** (named as NAME-0, NAME-1, etc.):
@ -1541,6 +1563,25 @@ The first layer in the definition is the top layer (visible by default).
'("full" . (display "🌕")))
(tp-layer-props 'moon-phases-full))
;; => (display "🌕" tp-name moon-phases-full)
;; Parameterized layer group referencing other defined layers
(progn
(setq tp-layer-alist nil)
(setq tp-layer-groups nil)
(define-tp tp-test-l1 (color)
`(face (:foreground ,color)))
(define-tp tp-test-l2 (color)
`(face (:foreground ,color)))
(define-tp tp-test-l3 ()
'(face (:background "green")))
(define-tps tp-test-group1 (color)
`(tp-test-l1 ,color) ;; Use group parameter
'(tp-test-l2 "red") ;; Use fixed parameter
'tp-test-l3) ;; Reference non-parameterized layer
(tp-set "emacs" 'tp-test-group1 "orange"))
;; => #("emacs" 0 5 (face (:foreground "orange") tp-name tp-test-l1
;; tp-layers ((face (:foreground "red") tp-name tp-test-l2)
;; (face (:background "green") tp-name tp-test-l3))))
```
---

View File

@ -1455,12 +1455,23 @@ tp.el 统一了"自定义文本属性"和"文本属性层"两个概念:
**格式二 - 有参数(带单个参数):**
```elisp
(define-tps tp-themed-status (color)
`(("success" . (face (:foreground ,color))))
'("warning" . (face (:foreground "orange"))))
;; 先定义参数化的单独层
(define-tp tp-color1 (color)
`(face (:foreground ,color)))
(define-tp tp-color2 (color)
`(face (:foreground ,color)))
(define-tp tp-bg ()
'(face (:background "green")))
;; 用法:
;; 层组可以使用参数创建相关的层
;; 定义参数化的层组,引用上面定义的层
(define-tps tp-themed-status (color)
`(tp-color1 ,color) ;; 使用层组参数
'(tp-color2 "red") ;; 使用固定参数
'tp-bg) ;; 引用无参数层
;; 用法 - 设置多层属性:
(tp-set "emacs" 'tp-themed-status "orange")
;; 结果: 三个层堆叠tp-color1 为顶层,使用 "orange" 颜色
```
**支持的层定义格式:**
@ -1547,6 +1558,25 @@ tp.el 统一了"自定义文本属性"和"文本属性层"两个概念:
'("full" . (display "🌕")))
(tp-layer-props 'moon-phases-full))
;; => (display "🌕" tp-name moon-phases-full)
;; 参数化层组,引用其他已定义的层
(progn
(setq tp-layer-alist nil)
(setq tp-layer-groups nil)
(define-tp tp-test-l1 (color)
`(face (:foreground ,color)))
(define-tp tp-test-l2 (color)
`(face (:foreground ,color)))
(define-tp tp-test-l3 ()
'(face (:background "green")))
(define-tps tp-test-group1 (color)
`(tp-test-l1 ,color) ;; 使用层组参数
'(tp-test-l2 "red") ;; 使用固定参数
'tp-test-l3) ;; 引用无参数层
(tp-set "emacs" 'tp-test-group1 "orange"))
;; => #("emacs" 0 5 (face (:foreground "orange") tp-name tp-test-l1
;; tp-layers ((face (:foreground "red") tp-name tp-test-l2)
;; (face (:background "green") tp-name tp-test-l3))))
```
---