;;; tp.el --- Retained reactive text runtime -*- lexical-binding: t -*- ;; Copyright (C) 2024-2026 Geekinney ;; Version: 2.0.0 ;; Keywords: convenience text-properties ;; Author: Geekinney (kinneyzhang666@gmail.com) ;; Package-Requires: ((emacs "28.1")) ;; URL: https://github.com/Kinneyzhang/tp ;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License as ;; published by the Free Software Foundation; either version 3 of ;; the License, or (at your option) any later version. ;;; Commentary: ;; TP projects declarative properties, reactive data, and retained text ;; objects onto Emacs strings and buffers. ;; ;; It is organized as a stack of modules, each depending only on the ;; ones before it: ;; ;; tp-core.el Foundation: ranges, intervals, plist/face merge, ;; canonical requests/results, and debug logging. ;; tp-style.el Native property policies, contribution composition, ;; named declarations, and explicit computed values. ;; tp-transaction.el ;; Structured publication batch, marker, and outcome contracts. ;; tp-reactive.el Exact signals, bindings, transactions, and scoped variable ;; adapters. ;; tp-surface.el Retained plans, objects, range anchors, mounts, indexes, ;; and atomic buffer publication. ;; tp-layer.el Named declaration recipes: `define-tp', `define-tps', ;; and direct property expansion. ;; tp-ops.el Core primitives: `tp-set', `tp-reset', `tp-add', ;; `tp-get', `tp-at', `tp-remove', `tp-clear'. ;; tp-search.el Pattern matching (`tp-match-*', `tp-regexp-*') and ;; property search/navigation (`tp-search', ...). ;; tp-query.el Native lookup/change wrappers and mutation policy. ;; tp-palette.el Color palette data (light/dark aware). ;; tp-builtins.el Built-in layers (tp-fg, tp-link, tp-action, ...) ;; and display helpers. ;; ;; Requiring this file loads the whole library: ;; ;; (require 'tp) ;; ;; See README.md for a guided tour and docs/ for details. ;; ;; Inspired by https://github.com/emacsorphanage/ov ;; Requires Emacs 28.1+ for `object-intervals'. ;;; Code: (require 'tp-core) (require 'tp-style) (require 'tp-transaction) (require 'tp-reactive) (require 'tp-surface) (require 'tp-layer) (require 'tp-ops) (require 'tp-search) (require 'tp-query) (require 'tp-palette) (require 'tp-builtins) (defconst tp--runtime-manifest `(:package tp :version "2.0.0" :transaction-protocol ,tp-transaction-protocol :batch-artifacts t :batch-execute t :structured-participant-api tp-transaction-participate-v2 :single-live-writer t :final-marker-operation tp-vector-slots/v1) "Immutable package capability facts for cross-package compatibility checks.") ;;;###autoload (defun tp-runtime-manifest () "Return a defensive snapshot of TP's package capability manifest." (tp--copy-property-value tp--runtime-manifest)) (provide 'tp) ;;; tp.el ends here