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:
parent
7614916aca
commit
99f50d4fee
14
readme.md
14
readme.md
@ -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:
|
||||
|
||||
```elisp
|
||||
(tp-layer-group-define my-status-group
|
||||
(tp-group-define my-status-group
|
||||
status-normal '(face (:background "green" :foreground "black"))
|
||||
status-warning '(face (:background "yellow" :foreground "black"))
|
||||
status-error '(face (:background "red" :foreground "white")))
|
||||
|
||||
;; 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
|
||||
@ -122,11 +122,11 @@ Define groups of layers that work together:
|
||||
| Function | Description |
|
||||
|----------|-------------|
|
||||
| `tp-layer-define (name properties)` | Define a named layer |
|
||||
| `tp-layer-group-define (name &rest layers)` | Define a layer group |
|
||||
| `tp-layer-properties (layer-name)` | Get properties for a layer |
|
||||
| `tp-layer-group-properties (group-name)` | Get properties for all layers in group |
|
||||
| `tp-group-define (name &rest layers)` | Define a layer group |
|
||||
| `tp-layer-props (layer-name)` | Get properties for a layer |
|
||||
| `tp-group-props (group-name)` | Get properties for all layers in group |
|
||||
| `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 |
|
||||
|
||||
### Layer Manipulation Functions
|
||||
@ -158,7 +158,7 @@ Define groups of layers that work together:
|
||||
|----------|-------------|
|
||||
| `tp-propertize (string &rest properties)` | Propertize 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
|
||||
|
||||
|
||||
31
tp.el
31
tp.el
@ -58,7 +58,7 @@ PROPERTIES should be a plist of text properties."
|
||||
(push (cons ',name ,properties) 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.
|
||||
LAYERS are specified as alternating NAME PROPERTIES pairs.
|
||||
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))
|
||||
(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'.
|
||||
Appends 'tp-name property to identify the layer."
|
||||
(when-let ((plist (cdr (assoc layer-name tp-layer-alist))))
|
||||
(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."
|
||||
(when-let ((layers (cdr (assoc group-name tp-layer-groups))))
|
||||
(mapcar (lambda (layer)
|
||||
(tp-layer-properties layer))
|
||||
(tp-layer-props layer))
|
||||
layers)))
|
||||
|
||||
(defalias 'tp-layer-group-properties 'tp-group-props
|
||||
"Alias for `tp-group-props'.")
|
||||
|
||||
;;; Basic text property functions (similar to ov.el)
|
||||
|
||||
(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))
|
||||
(when (tp-region-layer-props start end name object)
|
||||
(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)))
|
||||
;; No existing properties, just set the layer properties
|
||||
(set-text-properties start end
|
||||
@ -342,7 +351,7 @@ LAYER must be defined in `tp-layer-alist'."
|
||||
(apply #'propertize string (cdr layer-info))
|
||||
(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.
|
||||
LAYER-GROUP must be defined in `tp-layer-groups'.
|
||||
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)))
|
||||
;; Apply additional layers using the layer system
|
||||
(dolist (layer (cdr layers))
|
||||
(when-let ((props (tp-layer-properties layer)))
|
||||
(when-let ((props (tp-layer-props layer)))
|
||||
(set-text-properties 0 (length result)
|
||||
(append props
|
||||
(list 'tp-layers
|
||||
@ -363,6 +372,9 @@ Layers are applied in order, with later layers on top."
|
||||
result)
|
||||
(error "Layer group %S doesn't exist!" layer-group)))
|
||||
|
||||
(defalias 'tp-layer-group-propertize 'tp-group-propertize
|
||||
"Alias for `tp-group-propertize'.")
|
||||
|
||||
;;; Search functions
|
||||
|
||||
(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'."
|
||||
(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'."
|
||||
(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)
|
||||
;;; tp.el ends here
|
||||
|
||||
Loading…
Reference in New Issue
Block a user