Commit Graph

50 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
98f807993a Refine string modification behavior: region form modifies in-place, entire string form creates copy
Updated the implementation to clearly distinguish:
- (tp-set/add/reset START END PROPS STRING): Modifies original string in-place
- (tp-set/add/reset "string" PROP VAL ...): Creates NEW string using propertize

Also fixed code review issues:
- Removed unused 'offset' variable
- Made tp--remove-nested-keys non-destructive

Updated documentation with detailed behavior table and examples.

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-06 16:18:38 +00:00
copilot-swe-agent[bot]
70f60f1a25 Use propertize for non-destructive string operations in tp-set/add/reset/remove
This change makes tp-set, tp-add, tp-reset, and tp-remove return a NEW
propertized string when operating on strings, rather than modifying the
original string in-place. This is more idiomatic for Emacs Lisp and
prevents unintended side effects.

For buffer operations, the existing in-place modification behavior is
preserved.

Key changes:
- Added tp--apply-props-to-string helper function that uses propertize
- Updated tp-set, tp-add, tp-reset to use the new helper for strings
- Updated tp-remove with new helper functions for non-destructive removal
- Updated tp--match-apply and tp--regexp-apply to accumulate changes
- Added tests verifying original strings are not modified
- Updated documentation to reflect the new behavior

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-06 16:05:58 +00:00
copilot-swe-agent[bot]
d7e54e3b3d docs: separate custom text properties and text property layers introduction
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-04 13:55:50 +00:00
copilot-swe-agent[bot]
7e0a8573da Update documentation with parameterized layer group examples
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-04 13:25:54 +00:00
copilot-swe-agent[bot]
7934749397 Complete refactoring: remove tp-define-layer and tp-define-layer-group, use only define-tp and define-tps
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-04 11:35:30 +00:00
copilot-swe-agent[bot]
4607f50a13 Add reactive features support (:props, :data, :compute, :watch, :transform) to define-tp macro
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-04 11:16:53 +00:00
copilot-swe-agent[bot]
5667881765 Fix tp-group-props to handle both old and new formats, update remaining documentation examples
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-04 10:31:52 +00:00
copilot-swe-agent[bot]
5f55263eb2 Update English README.md documentation to use define-tp/define-tps format
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-04 10:28:07 +00:00
copilot-swe-agent[bot]
04feef0433 Add automatic property merging for duplicate keys in single call
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2026-01-01 16:49:16 +00:00
copilot-swe-agent[bot]
95f0f3d702 Add documentation for :transform, batch updates, and debug mode in English and Chinese
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-31 07:29:18 +00:00
copilot-swe-agent[bot]
a24bd264c1 Update define-tp format: use empty arglist () for non-parameterized layers
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-28 16:42:25 +00:00
copilot-swe-agent[bot]
11db0e3c04 Add English reactive text properties guide and link to detailed docs in both READMEs
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-28 11:01:35 +00:00
copilot-swe-agent[bot]
104b5b1d5c Update documentation to use quoted format for define-tp and define-tp-group
- Update README.md with new quoted format examples
- Update README_CN.md with new quoted format examples
- Simplify format descriptions (merged Format 2 and 3 into one)

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-21 02:25:20 +00:00
copilot-swe-agent[bot]
7d88744f85 Update documentation: tp-set entire-string form now supports layer names
Updated both English and Chinese documentation to reflect that
when setting text properties on an entire string, it now supports
not only flat properties (PROPERTY VALUE ...) but also layer names
defined by tp-define-layer or tp-define-layer-group.

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-20 14:10:42 +00:00
copilot-swe-agent[bot]
3c698dea8a Add detailed table of contents and layer name support in API documentation
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-20 11:48:45 +00:00
copilot-swe-agent[bot]
738ef6c34f docs: add tp-reactive-reset documentation section
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-20 11:29:11 +00:00
copilot-swe-agent[bot]
dde320314f docs: add reactive text properties documentation in English and Chinese
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-20 11:27:30 +00:00
copilot-swe-agent[bot]
cc98ac4ed8 Add tp-move-layer function and refactor layer switching functions to use it
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-18 03:05:44 +00:00
copilot-swe-agent[bot]
b6f3f87925 Separate tp-define-layer and tp-define-layer-group macros
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-17 16:08:10 +00:00
copilot-swe-agent[bot]
0903832e6f Fix documentation examples for tp-search-map and tp-forward-do in both README.md and README_CN.md
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-17 09:58:51 +00:00
copilot-swe-agent[bot]
8c068fb4a8 Refactor tp-search-map, tp-forward-do, tp-backward-do function signatures
- Updated tp-search-map signature to (function property &optional value object start end)
- Updated tp-forward-do signature to (function property &optional value object times start end)
- Updated tp-backward-do signature to (function property &optional value object times start end)
- Function callback for tp-search-map now accepts (text &optional start end idx)
- Function callback for tp-forward-do/tp-backward-do now accepts (text &optional start end)
- Updated internal helper functions tp--search-do, tp--forward-do, tp--backward-do
- Added new tests for the updated APIs
- Updated documentation in README.md and README_CN.md with examples

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-17 09:14:15 +00:00
copilot-swe-agent[bot]
ddd17794fd Add documentation for missing APIs: tp-add-to-layers, tp-add-to-all-layers, tp-intervals, tp-intervals-map, tp-region-layer-props, tp-plist, tp-empty-p
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-16 04:04:18 +00:00
copilot-swe-agent[bot]
47b6505d51 Update tp-forward-do/tp-backward-do docs and tests for "last match only" behavior
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-16 04:01:57 +00:00
copilot-swe-agent[bot]
e88337ff1f Add optional idx parameter support to tp-search-map function
The FUNCTION parameter in tp-search-map can now optionally accept a
second argument representing the 0-based index of the current match.
This is backwards compatible - functions that only accept one argument
continue to work as before.

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 15:27:33 +00:00
Kinneyzhang
c8383cb462 update readme 2025-12-15 22:46:21 +08:00
Kinneyzhang
8b3dcbbac2 update readme 2025-12-15 22:35:44 +08:00
Kinneyzhang
6e36931edd update readme 2025-12-15 22:27:52 +08:00
copilot-swe-agent[bot]
240e590f03 Replace put-text-property with tp-set in README examples
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 14:16:56 +00:00
copilot-swe-agent[bot]
fb7a98d333 Update README.md API examples to be independently runnable
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 13:44:57 +00:00
copilot-swe-agent[bot]
c3ba26872a Simplify pattern matching API to (PATTERN PLIST &optional OBJECT) format
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 13:24:31 +00:00
copilot-swe-agent[bot]
a3b531177e Fix tp-match and tp-regexp APIs to support multiple patterns as list
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 12:59:28 +00:00
copilot-swe-agent[bot]
091b4fa15f Remove tp-set-face/tp-set-display, rename tp-match to tp-match-set, tp-regexp to tp-regexp-set
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 12:32:56 +00:00
Kinneyzhang
ec5fa62ebd update readme 2025-12-15 20:15:18 +08:00
copilot-swe-agent[bot]
c1ca081602 Sync English README.md with Chinese documentation updates
- Updated introduction section with comprehensive overview
- Reorganized features into 7 hierarchical layers matching Chinese docs
- Renamed "Layer System" to "Property Layer System" throughout
- Added code examples to illustrate each feature category
- Emphasized features not available in native Emacs text property APIs

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 11:39:34 +00:00
copilot-swe-agent[bot]
969f9ef98e Update documentation for tp-get, tp-at, tp-forward-do, tp-backward-do APIs
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 10:39:29 +00:00
copilot-swe-agent[bot]
0b0bfedc6b Refactor tp-forward/backward and tp-search-do API
- tp-forward and tp-backward now support string objects
- Renamed tp-forward-do to tp--forward-do (private) with string support
- Renamed tp-backward-do to tp--backward-do (private) with string support
- New public tp-forward-do and tp-backward-do: function receives matched text only
- Renamed tp-search-do to tp--search-do (private)
- New public tp-search-map: function receives matched text only
- Updated English and Chinese documentation
- Updated and added tests for all new functionality

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 09:00:13 +00:00
copilot-swe-agent[bot]
11e6201bc1 Implement new text property search and navigation functions
- Modified tp-empty-p to support optional OBJECT parameter (nil = current buffer)
- Modified tp-plist to support two formats: (tp-plist start end &optional OBJECT) and (tp-plist string)
- Added tp-forward and tp-backward with new API (property &optional value object n)
- Added tp-forward-do and tp-backward-do for applying functions to matches
- Added tp-search for searching all matching properties in range or string
- Added tp-search-do for executing function on all matches
- Updated documentation (README.md and README_CN.md)
- Updated test cases (tp-tests.el)
- Removed obsolete function references (tp-next, tp-prev, tp-goto-next, tp-goto-prev, tp-in, tp-all, tp-regions-map, tp-strings-map)

Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 07:35:41 +00:00
copilot-swe-agent[bot]
62b5e47548 Remove internal APIs from public interface, delete tp-remove-list, fix tp-remove nested sub-property bug, add links in API Quick Reference
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 02:53:58 +00:00
copilot-swe-agent[bot]
7ff8344955 Add API Quick Reference section with categorized API overview to both README files
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-15 02:14:50 +00:00
copilot-swe-agent[bot]
321e124b74 Remove non-existent APIs from documentation: tp-layer-propertize, tp-group-propertize, tp-put alias
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 16:54:26 +00:00
Kinneyzhang
02d1875330 update test and readme 2025-12-15 00:44:50 +08:00
copilot-swe-agent[bot]
00280243f3 Update documentation with new layer API
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 16:21:47 +00:00
copilot-swe-agent[bot]
3f7f8cd9b9 Add support for deeply nested sub-properties and multiple key extraction in tp-get
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 15:25:53 +00:00
copilot-swe-agent[bot]
b31077e486 Fix tp-get to return intervals for entire strings and support property path lists
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 15:15:12 +00:00
copilot-swe-agent[bot]
932585da3f Fix tp-get to return intervals and tp-match/tp-regexp string parsing
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 13:50:45 +00:00
copilot-swe-agent[bot]
5994ce3a2a Fix tp-add face prepending, tp-remove and tp-get string support, update docs
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 13:06:08 +00:00
copilot-swe-agent[bot]
2bf16e1207 Update README.md and README_CN.md to document new API functions
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-14 12:12:31 +00:00
copilot-swe-agent[bot]
c285fb20eb Add enhanced tp-get with range support and fine-grained property functions
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-13 10:02:54 +00:00
copilot-swe-agent[bot]
ff62c2d014 Add Chinese documentation (README_CN.md)
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-12 03:45:33 +00:00
copilot-swe-agent[bot]
73f65e294b Optimize function naming and add object parameter support
Co-authored-by: Kinneyzhang <38454496+Kinneyzhang@users.noreply.github.com>
2025-12-12 03:34:13 +00:00