Update docs directory to use define-tp and define-tps format

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

View File

@ -27,7 +27,7 @@ tp.el 采用分层架构设计,每一层建立在下层功能之上:
┌─────────────────────────────────────────────────────────────────┐
│ 第四层:响应式系统 │
tp-define-layer, tp--reactive-variable-watcher,
define-tp, define-tps, tp--reactive-variable-watcher,
│ tp--update-layer-regions, tp--register-reactive-deps │
└─────────────────────────────────────────────────────────────────┘
@ -62,7 +62,7 @@ tp.el 采用分层架构设计,每一层建立在下层功能之上:
|------|------|--------|
| `tp--parse-args` | 解析灵活的函数参数格式 | tp-set, tp-reset, tp-add |
| `tp--parse-layer-args` | 解析属性层操作的参数 | tp-put-layer 及其他层操作函数 |
| `tp--parse-define-layer-args` | 解析 tp-define-layer 的参数 | tp-define-layer |
| `tp--parse-define-layer-args` | 解析 define-tp 的参数 | define-tp |
#### 数据结构操作
| 函数 | 描述 | 调用者 |
@ -192,11 +192,11 @@ tp.el 采用分层架构设计,每一层建立在下层功能之上:
| `tp--replace-reactive-text-in-buffer` | 在缓冲区中替换响应式文本 | - |
#### 层定义
| 函数 | 描述 | 依赖 |
|------|------|------|
| `tp-define-layer` | 定义单个属性层 | tp--parse-define-layer-args, tp--collect-reactive-symbols, tp--ensure-reactive-variables, tp--register-* |
| `tp-define-layer-group` | 定义属性层组 | tp--parse-layer-group-element, tp--define-layer-from-parsed |
| `tp--define-layer-from-parsed` | 从解析结果定义层 | (与 tp-define-layer 类似的依赖) |
| 函数/宏 | 描述 | 依赖 |
|---------|------|------|
| `define-tp` | 定义单个自定义文本属性(层)| tp--parse-define-layer-args, tp--collect-reactive-symbols, tp--ensure-reactive-variables, tp--register-* |
| `define-tps` | 定义自定义文本属性组(层组)| tp--parse-layer-group-element, tp--define-layer-from-parsed |
| `tp--define-layer-from-parsed` | 从解析结果定义层 | (与 define-tp 类似的依赖) |
| `tp--set-layer-props` | 设置层属性 | - |
| `tp--set-group-layers` | 设置组的层列表 | - |
| `tp-layer-props` | 获取层属性 | - |
@ -218,7 +218,7 @@ tp.el 采用分层架构设计,每一层建立在下层功能之上:
| 变量/函数 | 描述 | 依赖 |
|-----------|------|------|
| `tp-layer-transforms` | 存储层转换函数的 alist | - |
| `:transform` 选项 | 在 tp-define-layer 中指定转换函数 | tp-layer-transforms |
| `:transform` 选项 | 在 define-tp 中指定转换函数 | tp-layer-transforms |
#### 调试工具
| 变量/函数 | 描述 | 依赖 |
@ -290,9 +290,9 @@ tp-add
└── put-text-property (Emacs 原生)
```
### tp-define-layer 调用链
### define-tp 调用链
```
tp-define-layer
define-tp
├── tp--parse-define-layer-args
├── tp--collect-reactive-symbols
├── tp--unregister-reactive-deps

View File

@ -66,7 +66,7 @@ When using `setq-local`, updates only affect the specific buffer.
```elisp
;; Define a layer with transformation
(tp-define-layer 'currency-display
(define-tp currency-display ()
:props '(face bold tp-text $amount)
:data '((amount . "100"))
:transform (lambda (text)
@ -119,7 +119,7 @@ Debug log includes:
When modifying multiple reactive variables simultaneously, use batch updates to avoid multiple buffer updates:
```elisp
(tp-define-layer 'themed-text
(define-tp themed-text ()
:props '(face (:foreground $fg-color :background $bg-color))
:data '((fg-color . "white") (bg-color . "black")))
@ -143,14 +143,14 @@ Transform functions allow processing tp-text values before display:
```elisp
;; Number formatting
(tp-define-layer 'price-display
(define-tp price-display ()
:props '(tp-text $price)
:data '((price . "99.9"))
:transform (lambda (text)
(format "$%.2f" (string-to-number text))))
;; Date formatting
(tp-define-layer 'date-display
(define-tp date-display ()
:props '(tp-text $timestamp)
:data '((timestamp . "1703865600"))
:transform (lambda (text)
@ -158,7 +158,7 @@ Transform functions allow processing tp-text values before display:
(seconds-to-time (string-to-number text)))))
;; Uppercase conversion
(tp-define-layer 'uppercase-text
(define-tp uppercase-text ()
:props '(tp-text $content)
:data '((content . "hello"))
:transform #'upcase)
@ -174,7 +174,7 @@ Debug mode helps developers understand the reactive update flow:
(setq tp-debug-echo t)
;; Define and use a reactive layer
(tp-define-layer 'test-layer
(define-tp test-layer ()
:props '(face (:foreground $my-color))
:data '((my-color . "red")))

View File

@ -66,7 +66,7 @@
```elisp
;; 定义带转换的层
(tp-define-layer 'currency-display
(define-tp currency-display ()
:props '(face bold tp-text $amount)
:data '((amount . "100"))
:transform (lambda (text)
@ -119,7 +119,7 @@
当需要同时修改多个响应式变量时,使用批量更新可以避免多次缓冲区更新:
```elisp
(tp-define-layer 'themed-text
(define-tp themed-text ()
:props '(face (:foreground $fg-color :background $bg-color))
:data '((fg-color . "white") (bg-color . "black")))
@ -143,14 +143,14 @@
```elisp
;; 数字格式化
(tp-define-layer 'price-display
(define-tp price-display ()
:props '(tp-text $price)
:data '((price . "99.9"))
:transform (lambda (text)
(format "$%.2f" (string-to-number text))))
;; 日期格式化
(tp-define-layer 'date-display
(define-tp date-display ()
:props '(tp-text $timestamp)
:data '((timestamp . "1703865600"))
:transform (lambda (text)
@ -158,7 +158,7 @@
(seconds-to-time (string-to-number text)))))
;; 大写转换
(tp-define-layer 'uppercase-text
(define-tp uppercase-text ()
:props '(tp-text $content)
:data '((content . "hello"))
:transform #'upcase)
@ -174,7 +174,7 @@
(setq tp-debug-echo t)
;; 定义和使用响应式层
(tp-define-layer 'test-layer
(define-tp test-layer ()
:props '(face (:foreground $my-color))
:data '((my-color . "red")))

View File

@ -44,7 +44,7 @@ Now let's see how the reactive approach solves these problems:
(defvar my-color "red")
;; Define a reactive layer using $my-color to reference the variable
(tp-define-layer 'my-highlight
(define-tp my-highlight ()
'(face (:foreground $my-color)))
;; Apply to text
@ -85,7 +85,7 @@ Let's start with a simple example:
(defvar highlight-bg "yellow")
;; Define a reactive layer
(tp-define-layer 'simple-highlight
(define-tp simple-highlight ()
'(face (:background $highlight-bg)))
;; Create a test buffer and apply the layer
@ -110,7 +110,7 @@ A layer can reference multiple reactive variables:
(defvar underline-color "red")
;; Define a layer using multiple variables
(tp-define-layer 'multi-var-layer
(define-tp multi-var-layer ()
'(face ( :foreground $fg-color
:background $bg-color
:underline (:color $underline-color))))
@ -146,7 +146,7 @@ Main uses of `:data`:
```lisp
;; Complete computed properties example
(tp-define-layer 'computed-greeting
(define-tp computed-greeting ()
:props '(display $full-greeting face (:foreground $status-color))
:data '((user-name . "John")
(greeting-prefix . "Hello"))
@ -186,7 +186,7 @@ Main uses of `:data`:
```lisp
;; Layer with watchers
(tp-define-layer 'watched-layer
(define-tp watched-layer ()
:props '(face (:foreground $status-color))
:data '((status-color . "green"))
:watch '((status-color
@ -227,7 +227,7 @@ This example shows how to create an indicator that automatically changes color b
(defvar status-text "Not Started")
;; Define status indicator layer
(tp-define-layer 'status-indicator
(define-tp status-indicator ()
'(face (:background $status-color) display $status-text))
;; Define status update function
@ -271,10 +271,10 @@ This example shows how to create a switchable theme system:
(defvar string-color nil)
;; Define theme-related reactive layers
(tp-define-layer 'themed-keyword
(define-tp themed-keyword ()
'(face (:foreground $keyword-color :weight bold)))
(tp-define-layer 'themed-string
(define-tp themed-string ()
'(face (:foreground $string-color)))
;; Define theme switching functions
@ -314,7 +314,7 @@ This example shows how to create a switchable theme system:
## Anonymous Reactive Layers
Besides using `tp-define-layer` to define named layers, you can also use reactive variables directly in property lists. tp.el will automatically generate unique names for these anonymous layers:
Besides using `define-tp` to define named layers, you can also use reactive variables directly in property lists. tp.el will automatically generate unique names for these anonymous layers:
```lisp
(tp-layer-reset)
@ -386,7 +386,7 @@ The real power of `tp-text` comes from combining it with reactive variables:
(defvar my-dynamic-text "Loading...")
;; Define a layer containing tp-text
(tp-define-layer 'dynamic-content
(define-tp dynamic-content ()
:props '(face (:foreground "blue") tp-text $my-dynamic-text))
;; Apply to text
@ -409,7 +409,7 @@ The real power of `tp-text` comes from combining it with reactive variables:
`tp-text` can be combined with `:compute` to create dynamic text derived from other variables:
```lisp
(tp-define-layer 'greeting-layer
(define-tp greeting-layer ()
:props '(face (:foreground "green") tp-text $full-greeting)
:data '((user-name . "Guest")
(greeting-prefix . "Welcome"))
@ -461,7 +461,7 @@ The `:transform` keyword allows you to register a transformation function that p
```lisp
;; Number formatting
(tp-define-layer 'price-display
(define-tp price-display ()
:props '(tp-text $price)
:data '((price . "99.9"))
:transform (lambda (text)
@ -469,7 +469,7 @@ The `:transform` keyword allows you to register a transformation function that p
;; 99.9 displays as $99.00
;; Date formatting
(tp-define-layer 'date-display
(define-tp date-display ()
:props '(tp-text $timestamp)
:data '((timestamp . "1703865600"))
:transform (lambda (text)
@ -477,7 +477,7 @@ The `:transform` keyword allows you to register a transformation function that p
(seconds-to-time (string-to-number text)))))
;; Uppercase conversion
(tp-define-layer 'uppercase-text
(define-tp uppercase-text ()
:props '(tp-text $content)
:data '((content . "hello"))
:transform #'upcase)

View File

@ -44,7 +44,7 @@
(defvar my-color "red")
;; 定义一个响应式层,使用 $my-color 引用变量
(tp-define-layer 'my-highlight
(define-tp my-highlight ()
'(face (:foreground $my-color)))
;; 应用到文本
@ -85,7 +85,7 @@
(defvar highlight-bg "yellow")
;; 定义响应式层
(tp-define-layer 'simple-highlight
(define-tp simple-highlight ()
'(face (:background $highlight-bg)))
;; 创建测试缓冲区并应用层
@ -110,7 +110,7 @@
(defvar underline-color "red")
;; 定义使用多个变量的层
(tp-define-layer 'multi-var-layer
(define-tp multi-var-layer ()
'(face ( :foreground $fg-color
:background $bg-color
:underline (:color $underline-color))))
@ -146,7 +146,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
```lisp
;; 完整的计算属性示例
(tp-define-layer 'computed-greeting
(define-tp computed-greeting ()
:props '(display $full-greeting face (:foreground $status-color))
:data '((user-name . "张三")
(greeting-prefix . "你好"))
@ -186,7 +186,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
```lisp
;; 带监听器的层
(tp-define-layer 'watched-layer
(define-tp watched-layer ()
:props '(face (:foreground $status-color))
:data '((status-color . "green"))
:watch '((status-color
@ -227,7 +227,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
(defvar status-text "未开始")
;; 定义状态指示器层
(tp-define-layer 'status-indicator
(define-tp status-indicator ()
'(face (:background $status-color) display $status-text))
;; 定义状态更新函数
@ -271,10 +271,10 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
(defvar string-color nil)
;; 定义主题相关的响应式层
(tp-define-layer 'themed-keyword
(define-tp themed-keyword ()
'(face (:foreground $keyword-color :weight bold)))
(tp-define-layer 'themed-string
(define-tp themed-string ()
'(face (:foreground $string-color)))
;; 定义主题切换函数
@ -314,7 +314,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
## 匿名响应式层
除了使用 `tp-define-layer` 定义命名层你还可以直接在属性列表中使用响应式变量。tp.el 会自动为这些匿名层生成唯一的名称:
除了使用 `define-tp` 定义命名层你还可以直接在属性列表中使用响应式变量。tp.el 会自动为这些匿名层生成唯一的名称:
```lisp
(tp-layer-reset)
@ -386,7 +386,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
(defvar my-dynamic-text "Loading...")
;; 定义包含 tp-text 的响应式层
(tp-define-layer 'dynamic-content
(define-tp dynamic-content ()
:props '(face (:foreground "blue") tp-text $my-dynamic-text))
;; 应用到文本
@ -409,7 +409,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
`tp-text` 可以与 `:compute` 结合,创建由其他变量派生的动态文本:
```lisp
(tp-define-layer 'greeting-layer
(define-tp greeting-layer ()
:props '(face (:foreground "green") tp-text $full-greeting)
:data '((user-name . "访客")
(greeting-prefix . "欢迎"))
@ -461,7 +461,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
```lisp
;; 数字格式化
(tp-define-layer 'price-display
(define-tp price-display ()
:props '(tp-text $price)
:data '((price . "99.9"))
:transform (lambda (text)
@ -469,7 +469,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
;; 99.9 显示为 $99.00
;; 日期格式化
(tp-define-layer 'date-display
(define-tp date-display ()
:props '(tp-text $timestamp)
:data '((timestamp . "1703865600"))
:transform (lambda (text)
@ -477,7 +477,7 @@ tp.el 的响应式系统借鉴了 Vue 的 API提供了三个强大的关键
(seconds-to-time (string-to-number text)))))
;; 大写转换
(tp-define-layer 'uppercase-text
(define-tp uppercase-text ()
:props '(tp-text $content)
:data '((content . "hello"))
:transform #'upcase)