branch: elpa/gnosis
commit da2db182130ca0a1fdbf8e29f43b53fdb4d8fc37
Author: Thanos Apollo <[email protected]>
Commit: Thanos Apollo <[email protected]>
gnosis-tl: Update commentary.
---
gnosis-tl.el | 25 ++++++++++++++++++++-----
1 file changed, 20 insertions(+), 5 deletions(-)
diff --git a/gnosis-tl.el b/gnosis-tl.el
index 885a18c15e..4bed5be53a 100644
--- a/gnosis-tl.el
+++ b/gnosis-tl.el
@@ -1,4 +1,4 @@
-;;; gnosis-tl.el --- Fast single-entry tabulated-list operations -*-
lexical-binding: t; -*-
+;;; gnosis-tl.el --- Fast tabulated-list operations for large datasets -*-
lexical-binding: t; -*-
;; Copyright (C) 2023-2026 Free Software Foundation, Inc.
@@ -21,10 +21,25 @@
;;; Commentary:
-;; Single-entry replace and delete operations for tabulated-list buffers.
-;; Avoids calling `tabulated-list-print' (which re-renders ALL entries)
-;; when only one line needs to change. Full renders still use the
-;; standard `tabulated-list-print'.
+;; Fast tabulated-list operations for large datasets.
+;;
+;; Emacs's `tabulated-list-print' is expensive at scale: every
+;; `insert' triggers modification hooks, undo recording, marker
+;; adjustment, interval-tree updates, and cache invalidation.
+;; With ~8 inserts per entry across 6 columns, this adds up fast.
+;;
+;; Key optimizations:
+;;
+;; 1. Wrap the erase+render cycle with `inhibit-modification-hooks',
+;; eliminating per-mutation Elisp hook dispatch. Standard
+;; `tabulated-list-print' does NOT use this flag.
+;;
+;; 2. Skip `tabulated-list-column-name' text properties (one per
+;; column per entry). Instead, `gnosis-tl--column-at-point'
+;; computes the column from cursor position and format widths.
+;;
+;; Also provides single-entry replace/delete operations that avoid
+;; re-rendering the entire buffer when only one line changes.
;;; Code: