From 7e0a8573dad51df47ab0532d9424e7866aec0088 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 4 Jan 2026 13:25:54 +0000 Subject: [PATCH] Update documentation with parameterized layer group examples Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com> --- README.md | 41 +++++++++++++++++++++++++++++++++++++++++ README_CN.md | 40 +++++++++++++++++++++++++++++++++++----- 2 files changed, 76 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 6d938de..f4179fc 100644 --- a/README.md +++ b/README.md @@ -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)))) ``` --- diff --git a/README_CN.md b/README_CN.md index 2592c2f..a40c2f2 100644 --- a/README_CN.md +++ b/README_CN.md @@ -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)))) ``` ---