From a945c035ce9e3d5fda81a05f95f3ea1788a19ece Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Tue, 29 Sep 2026 13:43:52 -0300 Subject: A ^ after | anchors its branch: ^def|^ finds lines starting either way mvzr takes ^ only at its pattern's start, so in ^def|^ the second branch never matched mid-text. An alternation whose every top-level branch starts with ^ is now compiled as ^(def| ); a mix of anchored and unanchored branches is refused rather than silently wrong. Co-Authored-By: Claude Opus 5.5 --- .agents/skills/pardes-9p/SKILL.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to '.agents') diff --git a/.agents/skills/pardes-9p/SKILL.md b/.agents/skills/pardes-9p/SKILL.md index a91b4861..16e90dc9 100644 --- a/.agents/skills/pardes-9p/SKILL.md +++ b/.agents/skills/pardes-9p/SKILL.md @@ -289,8 +289,8 @@ through 14:2 inclusive), whose regexps are mvzr's searched as sam searches: newline, the leftmost match wins (the first alternative there, not the longest). In a pattern with `\n`, `^` works only first (`^def .*\n` finds every def line) and `$` only just before a `\n`; anywhere else the pattern is -refused, not silently unmatched. `^` inside an alternation (`^def|^ `) holds -only where the search starts: fine in `x` over lines or `g`, not mid-line. An expression is evaluated from the current address (the last one +refused, not silently unmatched. `^def|^ ` finds lines starting either way +(every branch anchored; a mix like `^def|x` is refused). An expression is evaluated from the current address (the last one written, or just past the last `data` write): `.` is that address, not the selection, `/re/` searches on from its end and wraps unless `limit` is set, `?re?` or `-/re/` searches back, `#100,#50` fails `addresses out of order`, -- cgit v1.3