aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-14 07:33:17 -0500
committerCraig Jennings <c@cjennings.net>2026-05-14 07:33:17 -0500
commitdd907fde706f5a9dec0473ff465dff2ee9d9ff6a (patch)
tree863bae393553e839be316379f40caef35a182372
parent71ebd8c1e16dbeec0a0e060bafc14c77ac72ab4f (diff)
downloaddotemacs-dd907fde706f5a9dec0473ff465dff2ee9d9ff6a.tar.gz
dotemacs-dd907fde706f5a9dec0473ff465dff2ee9d9ff6a.zip
chore(todo): close Python tree-sitter predicate bug as upstream-resolved
The treesit-query-error redisplay flood diagnosed 2026-04-26 no longer reproduces. Versions: emacs 30.2-3 (was 30.2-2 at the time of the investigation, upgraded 2026-05-03), tree-sitter 0.26.8 (unchanged). The upstream Emacs version string is unchanged, but the Arch package revision bump most likely carries a downstream patch to treesit.c's predicate translation. Verified by re-running the documented repro: the exact failing query from python.el captures cleanly via `treesit-query-capture', and `font-lock-ensure' on a real .py file under `python-ts-mode' returns with no `treesit-query-error'. No local override needed. Mark the todo.org entry DONE, fix the stale `inbox/' path on the investigation-doc link (file now lives under `docs/'), update the cross-reference from the grammar-bootstrap task to note this no longer blocks it, and append a RESOLVED 2026-05-14 footer to the investigation doc so future-me can see why it got closed.
-rw-r--r--docs/python-treesit-predicate-mismatch.txt23
-rw-r--r--todo.org16
2 files changed, 32 insertions, 7 deletions
diff --git a/docs/python-treesit-predicate-mismatch.txt b/docs/python-treesit-predicate-mismatch.txt
index 78f89b81..c56886af 100644
--- a/docs/python-treesit-predicate-mismatch.txt
+++ b/docs/python-treesit-predicate-mismatch.txt
@@ -194,3 +194,26 @@ This is upstream / system-level. Not a .emacs.d bug. Three fix surfaces:
- Local override in .emacs.d (workaround only)
Fixing in .emacs.d is a workaround, not a root-cause fix. Document it as such.
+
+
+RESOLVED 2026-05-14
+-------------------
+Bug no longer reproduces against the current versions:
+ - emacs 30.2-3 (Arch package; upgraded from 30.2-2 on 2026-05-03)
+ - tree-sitter 0.26.8-1 (unchanged from the original investigation)
+
+The exact failing query from the investigation (python.el lines
+1188-1190, the keyword + self-as-keyword block) now runs cleanly
+under `treesit-query-capture'. `font-lock-ensure' on a real Python
+file under `python-ts-mode' completes with no `treesit-query-error'.
+No local override applied to `modules/prog-python.el'.
+
+The upstream Emacs version string is unchanged (30.2 in both), but
+the Arch package revision bumped from -2 to -3 on 2026-05-03 -- most
+likely carrying a downstream patch that fixed the treesit.c predicate
+translation. This matches option A from the fix-options list above
+("WAIT FOR UPSTREAM EMACS FIX").
+
+If the flood ever returns, restart the investigation from the
+REPRODUCTION block above against whichever emacs / tree-sitter
+versions are then installed.
diff --git a/todo.org b/todo.org
index ba20eb74..5ce68014 100644
--- a/todo.org
+++ b/todo.org
@@ -381,16 +381,16 @@ CLOSED: [2026-05-14 Thu]
CLOSED: [2026-05-14 Thu]
*** DONE [#B] Add ERT tests for =modules/browser-config.el= (62/76, 81.6%) :tests:
-** TODO [#A] Fix Python tree-sitter font-lock query syntax error :bug:
-SCHEDULED: <2026-04-27 Mon>
+** DONE [#A] Fix Python tree-sitter font-lock query syntax error :bug:
+CLOSED: [2026-05-14 Thu]
-Diagnosed 2026-04-26 — paused at /start-work Gate 2. Root cause is system-level, not in =.emacs.d=: Emacs 30.2 + tree-sitter library 0.26.x predicate-syntax mismatch. Emacs sends =#match= (no =?= suffix), tree-sitter 0.26 rejects anything but =#match?=. Affects every =:match=, =:equal=, =:pred= predicate in every treesit-aware mode, not just Python.
+Diagnosed 2026-04-26 — paused at /start-work Gate 2. Root cause was system-level, not in =.emacs.d=: Emacs 30.2 + tree-sitter library 0.26.x predicate-syntax mismatch. Emacs sent =#match= (no =?= suffix), tree-sitter 0.26 rejected anything but =#match?=. Affected every =:match=, =:equal=, =:pred= predicate in every treesit-aware mode, not just Python.
Full investigation, reproduction, and fix-option analysis in:
-[[file:inbox/python-treesit-predicate-mismatch.txt][inbox/python-treesit-predicate-mismatch.txt]]
+[[file:docs/python-treesit-predicate-mismatch.txt][docs/python-treesit-predicate-mismatch.txt]]
-Fix surfaces are upstream (Emacs source or tree-sitter library) — local options are workarounds. Recommended next-session path: check whether Emacs 30.3 / master has a fix; if not, override =python--treesit-settings= in =modules/prog-python.el= to strip the loudest predicate-using queries (loses some highlighting, kills the redisplay flood).
+Resolved 2026-05-14 by an upstream emacs Arch-package revision bump (=30.2-2= → =30.2-3=, shipped 2026-05-03) — most likely carrying a downstream patch to =treesit.c='s predicate translation. Bug no longer reproduces: the exact failing query runs cleanly via =treesit-query-capture=, and =font-lock-ensure= on a real Python file under =python-ts-mode= completes with no =treesit-query-error=. No local override applied to =modules/prog-python.el=. Matches option A from the investigation's fix-options ("WAIT FOR UPSTREAM EMACS FIX").
** STALLED [#C] EPUB text is slightly left-of-center (shr word-wrap shortfall) :bug:
[2026-05-12] Visual review of the reading-width rework is done -- it's good. Not sure I actually need this nit fixed; the left-of-center bias is minor and the `+'/`-' keys let me nudge it. Parking here until I decide it bothers me enough.
@@ -1672,8 +1672,10 @@ Expected outcome:
- Batch/test startup should never auto-install grammars.
- Document the intentional bootstrap path for a new machine.
-This should be coordinated with the existing [#A] Python tree-sitter predicate
-syntax issue, since both touch tree-sitter reliability.
+Originally meant to coordinate with the [#A] Python tree-sitter predicate
+syntax issue. That one resolved upstream on 2026-05-14 (see =docs/python-
+treesit-predicate-mismatch.txt= RESOLVED footer), so this task no longer
+depends on it.
**** TODO [#C] Harden git clone from clipboard in =vc-config.el= :robustness:refactor: