Shorten function names for clarity: tp-group-* and tp-layer-props

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
This commit is contained in:
copilot-swe-agent[bot] 2025-12-11 03:16:09 +00:00
parent 7614916aca
commit 99f50d4fee
2 changed files with 30 additions and 15 deletions

View File

@ -87,13 +87,13 @@ The layer system allows you to stack multiple sets of properties on the same tex
Define groups of layers that work together: Define groups of layers that work together:
```elisp ```elisp
(tp-layer-group-define my-status-group (tp-group-define my-status-group
status-normal '(face (:background "green" :foreground "black")) status-normal '(face (:background "green" :foreground "black"))
status-warning '(face (:background "yellow" :foreground "black")) status-warning '(face (:background "yellow" :foreground "black"))
status-error '(face (:background "red" :foreground "white"))) status-error '(face (:background "red" :foreground "white")))
;; Apply all layers from a group to a string ;; Apply all layers from a group to a string
(tp-layer-group-propertize "Status" 'my-status-group) (tp-group-propertize "Status" 'my-status-group)
``` ```
## API Reference ## API Reference
@ -122,11 +122,11 @@ Define groups of layers that work together:
| Function | Description | | Function | Description |
|----------|-------------| |----------|-------------|
| `tp-layer-define (name properties)` | Define a named layer | | `tp-layer-define (name properties)` | Define a named layer |
| `tp-layer-group-define (name &rest layers)` | Define a layer group | | `tp-group-define (name &rest layers)` | Define a layer group |
| `tp-layer-properties (layer-name)` | Get properties for a layer | | `tp-layer-props (layer-name)` | Get properties for a layer |
| `tp-layer-group-properties (group-name)` | Get properties for all layers in group | | `tp-group-props (group-name)` | Get properties for all layers in group |
| `tp-layer-undefine (name)` | Remove a layer definition | | `tp-layer-undefine (name)` | Remove a layer definition |
| `tp-layer-group-undefine (name)` | Remove a layer group definition | | `tp-group-undefine (name)` | Remove a layer group definition |
| `tp-layer-reset ()` | Clear all layer definitions | | `tp-layer-reset ()` | Clear all layer definitions |
### Layer Manipulation Functions ### Layer Manipulation Functions
@ -158,7 +158,7 @@ Define groups of layers that work together:
|----------|-------------| |----------|-------------|
| `tp-propertize (string &rest properties)` | Propertize string | | `tp-propertize (string &rest properties)` | Propertize string |
| `tp-layer-propertize (string layer)` | Apply layer to string | | `tp-layer-propertize (string layer)` | Apply layer to string |
| `tp-layer-group-propertize (string layer-group)` | Apply layer group to string | | `tp-group-propertize (string layer-group)` | Apply layer group to string |
### Search Functions ### Search Functions

31
tp.el
View File

@ -58,7 +58,7 @@ PROPERTIES should be a plist of text properties."
(push (cons ',name ,properties) tp-layer-alist)) (push (cons ',name ,properties) tp-layer-alist))
(assoc ',name tp-layer-alist))) (assoc ',name tp-layer-alist)))
(defmacro tp-layer-group-define (name &rest layers) (defmacro tp-group-define (name &rest layers)
"Define a layer group named NAME containing LAYERS. "Define a layer group named NAME containing LAYERS.
LAYERS are specified as alternating NAME PROPERTIES pairs. LAYERS are specified as alternating NAME PROPERTIES pairs.
The first layer in the definition is the top layer (visible by default). The first layer in the definition is the top layer (visible by default).
@ -76,19 +76,28 @@ All layers are stored in `tp-layer-alist' and the group in `tp-layer-groups'."
(push (cons ',name layer-names) tp-layer-groups)) (push (cons ',name layer-names) tp-layer-groups))
(assoc ',name tp-layer-groups))) (assoc ',name tp-layer-groups)))
(defun tp-layer-properties (layer-name) (defalias 'tp-layer-group-define 'tp-group-define
"Alias for `tp-group-define'.")
(defun tp-layer-props (layer-name)
"Return properties for layer LAYER-NAME from `tp-layer-alist'. "Return properties for layer LAYER-NAME from `tp-layer-alist'.
Appends 'tp-name property to identify the layer." Appends 'tp-name property to identify the layer."
(when-let ((plist (cdr (assoc layer-name tp-layer-alist)))) (when-let ((plist (cdr (assoc layer-name tp-layer-alist))))
(append plist (list 'tp-name layer-name)))) (append plist (list 'tp-name layer-name))))
(defun tp-layer-group-properties (group-name) (defalias 'tp-layer-properties 'tp-layer-props
"Alias for `tp-layer-props'.")
(defun tp-group-props (group-name)
"Return list of properties for all layers in GROUP-NAME." "Return list of properties for all layers in GROUP-NAME."
(when-let ((layers (cdr (assoc group-name tp-layer-groups)))) (when-let ((layers (cdr (assoc group-name tp-layer-groups))))
(mapcar (lambda (layer) (mapcar (lambda (layer)
(tp-layer-properties layer)) (tp-layer-props layer))
layers))) layers)))
(defalias 'tp-layer-group-properties 'tp-group-props
"Alias for `tp-group-props'.")
;;; Basic text property functions (similar to ov.el) ;;; Basic text property functions (similar to ov.el)
(defun tp-put (start end &rest properties) (defun tp-put (start end &rest properties)
@ -238,7 +247,7 @@ Signals an error if layer NAME already exists in the region."
(declare (indent defun)) (declare (indent defun))
(when (tp-region-layer-props start end name object) (when (tp-region-layer-props start end name object)
(error "Already exist layer named %S" name)) (error "Already exist layer named %S" name))
(let ((props (tp-layer-properties name))) (let ((props (tp-layer-props name)))
(if (tp-empty-p (or object (current-buffer))) (if (tp-empty-p (or object (current-buffer)))
;; No existing properties, just set the layer properties ;; No existing properties, just set the layer properties
(set-text-properties start end (set-text-properties start end
@ -342,7 +351,7 @@ LAYER must be defined in `tp-layer-alist'."
(apply #'propertize string (cdr layer-info)) (apply #'propertize string (cdr layer-info))
(error "Layer %S doesn't exist!" layer))) (error "Layer %S doesn't exist!" layer)))
(defun tp-layer-group-propertize (string layer-group) (defun tp-group-propertize (string layer-group)
"Return STRING with all layers from LAYER-GROUP applied. "Return STRING with all layers from LAYER-GROUP applied.
LAYER-GROUP must be defined in `tp-layer-groups'. LAYER-GROUP must be defined in `tp-layer-groups'.
Layers are applied in order, with later layers on top." Layers are applied in order, with later layers on top."
@ -354,7 +363,7 @@ Layers are applied in order, with later layers on top."
(setq result (tp-layer-propertize result first-layer))) (setq result (tp-layer-propertize result first-layer)))
;; Apply additional layers using the layer system ;; Apply additional layers using the layer system
(dolist (layer (cdr layers)) (dolist (layer (cdr layers))
(when-let ((props (tp-layer-properties layer))) (when-let ((props (tp-layer-props layer)))
(set-text-properties 0 (length result) (set-text-properties 0 (length result)
(append props (append props
(list 'tp-layers (list 'tp-layers
@ -363,6 +372,9 @@ Layers are applied in order, with later layers on top."
result) result)
(error "Layer group %S doesn't exist!" layer-group))) (error "Layer group %S doesn't exist!" layer-group)))
(defalias 'tp-layer-group-propertize 'tp-group-propertize
"Alias for `tp-group-propertize'.")
;;; Search functions ;;; Search functions
(defun tp-forward (property &optional value predicate not-current) (defun tp-forward (property &optional value predicate not-current)
@ -653,9 +665,12 @@ Clears both `tp-layer-alist' and `tp-layer-groups'."
"Remove layer NAME from `tp-layer-alist'." "Remove layer NAME from `tp-layer-alist'."
(setq tp-layer-alist (assq-delete-all name tp-layer-alist))) (setq tp-layer-alist (assq-delete-all name tp-layer-alist)))
(defun tp-layer-group-undefine (name) (defun tp-group-undefine (name)
"Remove layer group NAME from `tp-layer-groups'." "Remove layer group NAME from `tp-layer-groups'."
(setq tp-layer-groups (assq-delete-all name tp-layer-groups))) (setq tp-layer-groups (assq-delete-all name tp-layer-groups)))
(defalias 'tp-layer-group-undefine 'tp-group-undefine
"Alias for `tp-group-undefine'.")
(provide 'tp) (provide 'tp)
;;; tp.el ends here ;;; tp.el ends here