Update documentation with new layer API

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-12-14 16:21:47 +00:00
parent 808fa94214
commit 00280243f3
2 changed files with 458 additions and 168 deletions

313
README.md
View File

@ -785,58 +785,57 @@ The **layer system** is tp.el's innovative feature that allows stacking multiple
``` ```
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ TOP LAYER (visible) │ ← What you see │ TOP LAYER (visible) │ ← idx=0, What you see
├─────────────────────────────┤ ├─────────────────────────────┤
│ Middle Layer (hidden) │ ← Preserved │ Middle Layer (hidden) │ ← idx=1, Preserved
├─────────────────────────────┤ ├─────────────────────────────┤
│ Bottom Layer (hidden) │ ← Preserved │ Bottom Layer (hidden) │ ← idx=-1, Preserved
└─────────────────────────────┘ └─────────────────────────────┘
``` ```
### Layer Definition Functions ### Layer Definition
#### `tp-layer-define` - Define a Layer #### `tp-define-layer` - Define Layer(s)
Define a single layer or a group of multiple layers.
**Single Layer:**
```elisp ```elisp
(tp-layer-define NAME PROPERTIES) (tp-define-layer layer-name
(face (:background "cyan") line-prefix ">>"))
``` ```
Define a named layer with properties. **Multiple Layers (Layer Group):**
```elisp
(tp-define-layer my-group
layer-1 ; Reference existing layer
(face (:background "red") line-prefix ">>") ; Anonymous layer
(face (:background "green" :weight bold))) ; Another anonymous layer
```
The first layer in the definition is the top layer (visible by default).
**Examples:** **Examples:**
```elisp ```elisp
(tp-layer-define highlight ;; Define individual layers
'(face (:background "yellow" :foreground "black"))) (tp-define-layer highlight
(face (:background "yellow" :foreground "black")))
(tp-layer-define error (tp-define-layer error
'(face (:background "red" :foreground "white") (face (:background "red" :foreground "white")
help-echo "Error!")) help-echo "Error!"))
(tp-layer-define info (tp-define-layer info
'(face (:background "blue" :foreground "white"))) (face (:background "blue" :foreground "white")))
```
--- ;; Define a layer group
(tp-define-layer status-colors
#### `tp-group-define` - Define Layer Group highlight
error
```elisp info)
(tp-group-define NAME
LAYER1 PROPERTIES1
LAYER2 PROPERTIES2
...)
```
Define a group of related layers.
**Examples:**
```elisp
(tp-group-define status-colors
status-ok '(face (:foreground "green"))
status-warning '(face (:foreground "orange"))
status-error '(face (:foreground "red")))
``` ```
--- ---
@ -873,53 +872,146 @@ Clear all layer and group definitions.
--- ---
### Layer Manipulation Functions ### Layer Placement
#### `tp-layer-push` - Add Layer #### `tp-put-layer` - Set Layer at Index
```elisp ```elisp
(tp-layer-push START END NAME &optional OBJECT) ;; Buffer/string region
(tp-put-layer START END LAYER IDX OBJECT)
;; Entire string
(tp-put-layer STRING LAYER IDX)
``` ```
Push a layer to the top of the stack. Set layer(s) at a specific index position in the layer stack.
- `IDX = 0`: Top (visible layer)
- `IDX = -1`: Bottom
- Other values insert at that position
**Examples:** **Examples:**
```elisp ```elisp
(tp-layer-define base '(face default)) (tp-define-layer base (face default))
(tp-layer-define highlight '(face (:background "yellow"))) (tp-define-layer highlight (face (:background "yellow")))
;; Put base layer at top
(tp-put-layer 1 10 'base 0)
;; Put highlight at index 1 (below top)
(tp-put-layer 1 10 'highlight 1)
;; Put layer at bottom
(tp-put-layer 1 10 'info -1)
```
---
#### `tp-push-layer` - Push Layer to Top
```elisp
;; Buffer/string region
(tp-push-layer START END LAYER OBJECT)
;; Entire string
(tp-push-layer STRING LAYER)
```
Push a layer to the top of the stack (equivalent to `tp-put-layer ... 0`).
**Examples:**
```elisp
(tp-define-layer base (face default))
(tp-define-layer highlight (face (:background "yellow")))
;; Push base layer first ;; Push base layer first
(tp-layer-push 1 10 'base) (tp-push-layer 1 10 'base)
;; Push highlight on top (now visible) ;; Push highlight on top (now visible)
(tp-layer-push 1 10 'highlight) (tp-push-layer 1 10 'highlight)
``` ```
--- ---
#### `tp-layer-delete` - Remove Layer ### Layer Deletion
#### `tp-delete-layer` - Delete Layer by Name/Index
```elisp ```elisp
(tp-layer-delete START END NAME &optional OBJECT) ;; Buffer/string region
(tp-delete-layer START END LAYER-NAME/IDX OBJECT)
;; Entire string
(tp-delete-layer STRING LAYER-NAME/IDX)
``` ```
Delete a layer from anywhere in the stack. Delete a layer from anywhere in the stack by name or index.
**Examples:** **Examples:**
```elisp ```elisp
;; Remove the highlight layer ;; Remove by name
(tp-layer-delete 1 10 'highlight) (tp-delete-layer 1 10 'highlight)
;; base layer is now visible
;; Remove top layer (idx=0)
(tp-delete-layer 1 10 0)
;; Remove bottom layer
(tp-delete-layer 1 10 -1)
``` ```
--- ---
#### `tp-layer-rotate` - Cycle Layers #### `tp-pop-layer` - Pop Top Layer
```elisp ```elisp
(tp-layer-rotate START END &optional OBJECT) ;; Buffer/string region
(tp-pop-layer START END OBJECT)
;; Entire string
(tp-pop-layer STRING)
```
Remove the top layer (equivalent to `tp-delete-layer ... 0`).
---
### Layer Movement
#### `tp-raise-layer` - Move Layer Up/Down
```elisp
;; Buffer/string region
(tp-raise-layer START END IDX/LAYER-NAME N OBJECT)
;; Entire string
(tp-raise-layer STRING IDX/LAYER-NAME N)
```
Raise a layer by N positions. Positive N moves toward top, negative moves toward bottom.
**Examples:**
```elisp
;; Move layer1 up by 2 positions
(tp-raise-layer 1 10 'layer1 2)
;; Move layer at idx 2 down by 1 position
(tp-raise-layer 1 10 2 -1)
```
---
#### `tp-rotate-layer` - Cycle Layers
```elisp
;; Buffer/string region
(tp-rotate-layer START END OBJECT)
;; Entire string
(tp-rotate-layer STRING)
``` ```
Rotate layers - top goes to bottom, next becomes visible. Rotate layers - top goes to bottom, next becomes visible.
@ -928,47 +1020,101 @@ Rotate layers - top goes to bottom, next becomes visible.
```elisp ```elisp
;; Stack: highlight (top) -> base (bottom) ;; Stack: highlight (top) -> base (bottom)
(tp-layer-rotate 1 10) (tp-rotate-layer 1 10)
;; Stack: base (top) -> highlight (bottom) ;; Stack: base (top) -> highlight (bottom)
``` ```
--- ---
#### `tp-layer-pin` - Bring Layer to Top #### `tp-pin-layer` - Pin Layer to Top
```elisp ```elisp
(tp-layer-pin START END NAME &optional OBJECT) ;; Buffer/string region
(tp-pin-layer START END IDX/LAYER-NAME OBJECT)
;; Entire string
(tp-pin-layer STRING IDX/LAYER-NAME)
``` ```
Move a specific layer to the top. Move a specific layer to the top (make it visible).
**Examples:** **Examples:**
```elisp ```elisp
;; Make 'base the top layer ;; Make 'base the top layer
(tp-layer-pin 1 10 'base) (tp-pin-layer 1 10 'base)
``` ```
--- ---
#### `tp-layer-hide` / `tp-layer-show` #### `tp-switch-layer` - Switch Two Layers
```elisp ```elisp
(tp-layer-hide START END NAME &optional OBJECT) ;; Buffer/string region
(tp-layer-show START END NAME &optional OBJECT) (tp-switch-layer START END IDX1/NAME1 IDX2/NAME2 OBJECT)
;; Entire string
(tp-switch-layer STRING IDX1/NAME1 IDX2/NAME2)
``` ```
Hide layer (move to bottom) or show layer (move to top). Swap positions of two layers.
**Examples:**
```elisp
;; Switch layer1 and layer2
(tp-switch-layer 1 10 'layer1 'layer2)
```
--- ---
#### `tp-layer-merge` ### Layer Merging
#### `tp-merge-layers` - Merge Multiple Layers
```elisp ```elisp
(tp-layer-merge START END LAYER1 LAYER2 NEW-NAME &optional OBJECT) ;; Buffer/string region
(tp-merge-layers START END NEW-LAYER-NAME '(IDX1 LAYER-NAME1 IDX2 ...) OBJECT)
;; Entire string
(tp-merge-layers STRING NEW-LAYER-NAME '(IDX1 LAYER-NAME1 IDX2 ...))
``` ```
Merge two layers into one new layer. Merge specified layers into a new layer. Earlier layers in the list take precedence.
**Examples:**
```elisp
;; Merge layer1 and layer2 into merged-layer
(tp-merge-layers 1 10 'merged-layer '(layer1 layer2))
;; Merge by index
(tp-merge-layers 1 10 'merged '(0 1 2))
```
---
#### `tp-flatten-layers` - Flatten All Layers
```elisp
;; Buffer/string region
(tp-flatten-layers START END NAME OBJECT)
;; Entire string
(tp-flatten-layers STRING NAME)
```
Flatten all layers into a single layer with the given name.
**Examples:**
```elisp
;; Flatten all layers into 'flat-layer
(tp-flatten-layers 1 10 'flat-layer)
;; Flatten with nil name (unnamed layer)
(tp-flatten-layers 1 10 nil)
```
--- ---
@ -1026,54 +1172,55 @@ Get name of the top (visible) layer.
```elisp ```elisp
;; Define layers for different highlighting purposes ;; Define layers for different highlighting purposes
(tp-layer-define code-base (tp-define-layer code-base
'(face font-lock-keyword-face)) (face font-lock-keyword-face))
(tp-layer-define code-error (tp-define-layer code-error
'(face (:underline (:color "red" :style wave)) (face (:underline (:color "red" :style wave))
help-echo "Syntax error")) help-echo "Syntax error"))
(tp-layer-define code-debug (tp-define-layer code-debug
'(face (:background "dark blue"))) (face (:background "dark blue")))
;; Apply base highlighting ;; Apply base highlighting
(tp-layer-push 1 100 'code-base) (tp-push-layer 1 100 'code-base)
;; Add error highlight on problematic code ;; Add error highlight on problematic code
(tp-layer-push 50 60 'code-error) (tp-push-layer 50 60 'code-error)
;; Toggle between error and normal view ;; Toggle between error and normal view
(defun toggle-error-view () (defun toggle-error-view ()
(interactive) (interactive)
(tp-layer-rotate 50 60)) (tp-rotate-layer 50 60))
``` ```
### Status Indicator ### Status Indicator
```elisp ```elisp
(tp-group-define task-status ;; Define status layers as a group
status-todo '(face (:foreground "gray")) (tp-define-layer status-todo (face (:foreground "gray")))
status-progress '(face (:foreground "yellow")) (tp-define-layer status-progress (face (:foreground "yellow")))
status-done '(face (:foreground "green"))) (tp-define-layer status-done (face (:foreground "green")))
(tp-define-layer task-status status-todo status-progress status-done)
;; Cycle through statuses ;; Cycle through statuses
(defun cycle-task-status () (defun cycle-task-status ()
(interactive) (interactive)
(tp-layer-rotate (line-beginning-position) (line-end-position))) (tp-rotate-layer (line-beginning-position) (line-end-position)))
``` ```
### Temporary Highlights ### Temporary Highlights
```elisp ```elisp
(tp-layer-define temp-highlight (tp-define-layer temp-highlight
'(face (:background "yellow"))) (face (:background "yellow")))
(defun flash-region (start end) (defun flash-region (start end)
"Flash a region temporarily." "Flash a region temporarily."
(tp-layer-push start end 'temp-highlight) (tp-push-layer start end 'temp-highlight)
(run-with-timer 0.5 nil (run-with-timer 0.5 nil
(lambda () (lambda ()
(tp-layer-delete start end 'temp-highlight)))) (tp-delete-layer start end 'temp-highlight))))
``` ```
--- ---
@ -1086,9 +1233,7 @@ For convenience, tp.el provides these aliases:
|-------|-------------------| |-------|-------------------|
| `tp-put` | `tp-set` | | `tp-put` | `tp-set` |
| `tp-layer-properties` | `tp-layer-props` | | `tp-layer-properties` | `tp-layer-props` |
| `tp-layer-group-define` | `tp-group-define` |
| `tp-layer-group-properties` | `tp-group-props` | | `tp-layer-group-properties` | `tp-group-props` |
| `tp-layer-group-propertize` | `tp-group-propertize` |
| `tp-layer-group-undefine` | `tp-group-undefine` | | `tp-layer-group-undefine` | `tp-group-undefine` |
### Deprecated Functions ### Deprecated Functions

View File

@ -784,58 +784,57 @@ tp.el 提供三个主要的属性设置函数,每个有不同的语义:
``` ```
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ 顶层(可见) │ ← 你看到的 │ 顶层(可见) │ ← idx=0你看到的
├─────────────────────────────┤ ├─────────────────────────────┤
│ 中间层(隐藏) │ ← 被保留 │ 中间层(隐藏) │ ← idx=1被保留
├─────────────────────────────┤ ├─────────────────────────────┤
│ 底层(隐藏) │ ← 被保留 │ 底层(隐藏) │ ← idx=-1被保留
└─────────────────────────────┘ └─────────────────────────────┘
``` ```
### 图层定义函数 ### 图层定义
#### `tp-layer-define` - 定义图层 #### `tp-define-layer` - 定义图层
定义单个图层或多个图层组。
**单个图层:**
```elisp ```elisp
(tp-layer-define NAME PROPERTIES) (tp-define-layer layer-name
(face (:background "cyan") line-prefix ">>"))
``` ```
定义一个带属性的命名图层。 **多个图层(图层组):**
```elisp
(tp-define-layer my-group
layer-1 ; 引用已存在的图层
(face (:background "red") line-prefix ">>") ; 匿名图层
(face (:background "green" :weight bold))) ; 另一个匿名图层
```
定义中的第一个图层是顶层(默认可见)。
**示例:** **示例:**
```elisp ```elisp
(tp-layer-define highlight ;; 定义单个图层
'(face (:background "yellow" :foreground "black"))) (tp-define-layer highlight
(face (:background "yellow" :foreground "black")))
(tp-layer-define error (tp-define-layer error
'(face (:background "red" :foreground "white") (face (:background "red" :foreground "white")
help-echo "错误!")) help-echo "错误!"))
(tp-layer-define info (tp-define-layer info
'(face (:background "blue" :foreground "white"))) (face (:background "blue" :foreground "white")))
```
--- ;; 定义图层组
(tp-define-layer status-colors
#### `tp-group-define` - 定义图层组 highlight
error
```elisp info)
(tp-group-define NAME
LAYER1 PROPERTIES1
LAYER2 PROPERTIES2
...)
```
定义一组相关的图层。
**示例:**
```elisp
(tp-group-define status-colors
status-ok '(face (:foreground "green"))
status-warning '(face (:foreground "orange"))
status-error '(face (:foreground "red")))
``` ```
--- ---
@ -872,53 +871,146 @@ tp.el 提供三个主要的属性设置函数,每个有不同的语义:
--- ---
### 图层操作函数 ### 图层放置
#### `tp-layer-push` - 添加图层 #### `tp-put-layer` - 在指定位置设置图层
```elisp ```elisp
(tp-layer-push START END NAME &optional OBJECT) ;; 缓冲区/字符串区域
(tp-put-layer START END LAYER IDX OBJECT)
;; 整个字符串
(tp-put-layer STRING LAYER IDX)
``` ```
将图层推到堆栈顶部。 在图层堆栈的指定索引位置设置图层。
- `IDX = 0`:顶部(可见图层)
- `IDX = -1`:底部
- 其他值在该位置插入
**示例:** **示例:**
```elisp ```elisp
(tp-layer-define base '(face default)) (tp-define-layer base (face default))
(tp-layer-define highlight '(face (:background "yellow"))) (tp-define-layer highlight (face (:background "yellow")))
;; 将 base 图层放在顶部
(tp-put-layer 1 10 'base 0)
;; 将 highlight 放在索引 1顶部下面
(tp-put-layer 1 10 'highlight 1)
;; 将图层放在底部
(tp-put-layer 1 10 'info -1)
```
---
#### `tp-push-layer` - 推送图层到顶部
```elisp
;; 缓冲区/字符串区域
(tp-push-layer START END LAYER OBJECT)
;; 整个字符串
(tp-push-layer STRING LAYER)
```
将图层推到堆栈顶部(相当于 `tp-put-layer ... 0`)。
**示例:**
```elisp
(tp-define-layer base (face default))
(tp-define-layer highlight (face (:background "yellow")))
;; 首先推入 base 图层 ;; 首先推入 base 图层
(tp-layer-push 1 10 'base) (tp-push-layer 1 10 'base)
;; 将 highlight 推到顶部(现在可见) ;; 将 highlight 推到顶部(现在可见)
(tp-layer-push 1 10 'highlight) (tp-push-layer 1 10 'highlight)
``` ```
--- ---
#### `tp-layer-delete` - 删除图层 ### 图层删除
#### `tp-delete-layer` - 按名称/索引删除图层
```elisp ```elisp
(tp-layer-delete START END NAME &optional OBJECT) ;; 缓冲区/字符串区域
(tp-delete-layer START END LAYER-NAME/IDX OBJECT)
;; 整个字符串
(tp-delete-layer STRING LAYER-NAME/IDX)
``` ```
从堆栈任何位置删除图层。 通过名称或索引从堆栈任意位置删除图层。
**示例:** **示例:**
```elisp ```elisp
;; 删除 highlight 图层 ;; 按名称删除
(tp-layer-delete 1 10 'highlight) (tp-delete-layer 1 10 'highlight)
;; base 图层现在可见
;; 删除顶层idx=0
(tp-delete-layer 1 10 0)
;; 删除底层
(tp-delete-layer 1 10 -1)
``` ```
--- ---
#### `tp-layer-rotate` - 轮换图层 #### `tp-pop-layer` - 弹出顶
```elisp ```elisp
(tp-layer-rotate START END &optional OBJECT) ;; 缓冲区/字符串区域
(tp-pop-layer START END OBJECT)
;; 整个字符串
(tp-pop-layer STRING)
```
删除顶层(相当于 `tp-delete-layer ... 0`)。
---
### 图层移动
#### `tp-raise-layer` - 上移/下移图层
```elisp
;; 缓冲区/字符串区域
(tp-raise-layer START END IDX/LAYER-NAME N OBJECT)
;; 整个字符串
(tp-raise-layer STRING IDX/LAYER-NAME N)
```
将图层上移 N 个位置。正数 N 向顶部移动,负数向底部移动。
**示例:**
```elisp
;; 将 layer1 上移 2 个位置
(tp-raise-layer 1 10 'layer1 2)
;; 将索引 2 的图层下移 1 个位置
(tp-raise-layer 1 10 2 -1)
```
---
#### `tp-rotate-layer` - 轮换图层
```elisp
;; 缓冲区/字符串区域
(tp-rotate-layer START END OBJECT)
;; 整个字符串
(tp-rotate-layer STRING)
``` ```
轮换图层 - 顶层移到底部,下一层变为可见。 轮换图层 - 顶层移到底部,下一层变为可见。
@ -927,47 +1019,101 @@ tp.el 提供三个主要的属性设置函数,每个有不同的语义:
```elisp ```elisp
;; 堆栈: highlight (顶) -> base (底) ;; 堆栈: highlight (顶) -> base (底)
(tp-layer-rotate 1 10) (tp-rotate-layer 1 10)
;; 堆栈: base (顶) -> highlight (底) ;; 堆栈: base (顶) -> highlight (底)
``` ```
--- ---
#### `tp-layer-pin` - 将图层置顶 #### `tp-pin-layer` - 将图层置顶
```elisp ```elisp
(tp-layer-pin START END NAME &optional OBJECT) ;; 缓冲区/字符串区域
(tp-pin-layer START END IDX/LAYER-NAME OBJECT)
;; 整个字符串
(tp-pin-layer STRING IDX/LAYER-NAME)
``` ```
将特定图层移到顶部。 将特定图层移到顶部(使其可见)
**示例:** **示例:**
```elisp ```elisp
;; 将 'base 设为顶层 ;; 将 'base 设为顶层
(tp-layer-pin 1 10 'base) (tp-pin-layer 1 10 'base)
``` ```
--- ---
#### `tp-layer-hide` / `tp-layer-show` #### `tp-switch-layer` - 交换两个图层
```elisp ```elisp
(tp-layer-hide START END NAME &optional OBJECT) ;; 缓冲区/字符串区域
(tp-layer-show START END NAME &optional OBJECT) (tp-switch-layer START END IDX1/NAME1 IDX2/NAME2 OBJECT)
;; 整个字符串
(tp-switch-layer STRING IDX1/NAME1 IDX2/NAME2)
``` ```
隐藏图层(移到底部)或显示图层(移到顶部)。 交换两个图层的位置。
**示例:**
```elisp
;; 交换 layer1 和 layer2
(tp-switch-layer 1 10 'layer1 'layer2)
```
--- ---
#### `tp-layer-merge` ### 图层合并
#### `tp-merge-layers` - 合并多个图层
```elisp ```elisp
(tp-layer-merge START END LAYER1 LAYER2 NEW-NAME &optional OBJECT) ;; 缓冲区/字符串区域
(tp-merge-layers START END NEW-LAYER-NAME '(IDX1 LAYER-NAME1 IDX2 ...) OBJECT)
;; 整个字符串
(tp-merge-layers STRING NEW-LAYER-NAME '(IDX1 LAYER-NAME1 IDX2 ...))
``` ```
将两个图层合并为一个新图层。 将指定的图层合并为一个新图层。列表中靠前的图层优先级更高。
**示例:**
```elisp
;; 将 layer1 和 layer2 合并为 merged-layer
(tp-merge-layers 1 10 'merged-layer '(layer1 layer2))
;; 按索引合并
(tp-merge-layers 1 10 'merged '(0 1 2))
```
---
#### `tp-flatten-layers` - 扁平化所有图层
```elisp
;; 缓冲区/字符串区域
(tp-flatten-layers START END NAME OBJECT)
;; 整个字符串
(tp-flatten-layers STRING NAME)
```
将所有图层扁平化为一个具有给定名称的单一图层。
**示例:**
```elisp
;; 将所有图层扁平化为 'flat-layer
(tp-flatten-layers 1 10 'flat-layer)
;; 使用 nil 名称扁平化(无名图层)
(tp-flatten-layers 1 10 nil)
```
--- ---
@ -1025,54 +1171,55 @@ tp.el 提供三个主要的属性设置函数,每个有不同的语义:
```elisp ```elisp
;; 为不同高亮目的定义图层 ;; 为不同高亮目的定义图层
(tp-layer-define code-base (tp-define-layer code-base
'(face font-lock-keyword-face)) (face font-lock-keyword-face))
(tp-layer-define code-error (tp-define-layer code-error
'(face (:underline (:color "red" :style wave)) (face (:underline (:color "red" :style wave))
help-echo "语法错误")) help-echo "语法错误"))
(tp-layer-define code-debug (tp-define-layer code-debug
'(face (:background "dark blue"))) (face (:background "dark blue")))
;; 应用基础高亮 ;; 应用基础高亮
(tp-layer-push 1 100 'code-base) (tp-push-layer 1 100 'code-base)
;; 在有问题的代码上添加错误高亮 ;; 在有问题的代码上添加错误高亮
(tp-layer-push 50 60 'code-error) (tp-push-layer 50 60 'code-error)
;; 在错误和正常视图之间切换 ;; 在错误和正常视图之间切换
(defun toggle-error-view () (defun toggle-error-view ()
(interactive) (interactive)
(tp-layer-rotate 50 60)) (tp-rotate-layer 50 60))
``` ```
### 状态指示器 ### 状态指示器
```elisp ```elisp
(tp-group-define task-status ;; 将状态图层定义为一个组
status-todo '(face (:foreground "gray")) (tp-define-layer status-todo (face (:foreground "gray")))
status-progress '(face (:foreground "yellow")) (tp-define-layer status-progress (face (:foreground "yellow")))
status-done '(face (:foreground "green"))) (tp-define-layer status-done (face (:foreground "green")))
(tp-define-layer task-status status-todo status-progress status-done)
;; 循环切换状态 ;; 循环切换状态
(defun cycle-task-status () (defun cycle-task-status ()
(interactive) (interactive)
(tp-layer-rotate (line-beginning-position) (line-end-position))) (tp-rotate-layer (line-beginning-position) (line-end-position)))
``` ```
### 临时高亮 ### 临时高亮
```elisp ```elisp
(tp-layer-define temp-highlight (tp-define-layer temp-highlight
'(face (:background "yellow"))) (face (:background "yellow")))
(defun flash-region (start end) (defun flash-region (start end)
"临时闪烁一个区域。" "临时闪烁一个区域。"
(tp-layer-push start end 'temp-highlight) (tp-push-layer start end 'temp-highlight)
(run-with-timer 0.5 nil (run-with-timer 0.5 nil
(lambda () (lambda ()
(tp-layer-delete start end 'temp-highlight)))) (tp-delete-layer start end 'temp-highlight))))
``` ```
--- ---
@ -1085,9 +1232,7 @@ tp.el 提供三个主要的属性设置函数,每个有不同的语义:
|------|--------| |------|--------|
| `tp-put` | `tp-set` | | `tp-put` | `tp-set` |
| `tp-layer-properties` | `tp-layer-props` | | `tp-layer-properties` | `tp-layer-props` |
| `tp-layer-group-define` | `tp-group-define` |
| `tp-layer-group-properties` | `tp-group-props` | | `tp-layer-group-properties` | `tp-group-props` |
| `tp-layer-group-propertize` | `tp-group-propertize` |
| `tp-layer-group-undefine` | `tp-group-undefine` | | `tp-layer-group-undefine` | `tp-group-undefine` |
### 已弃用函数 ### 已弃用函数