summaryrefslogtreecommitdiff
path: root/docs/fs.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/fs.md')
-rw-r--r--docs/fs.md10
1 files changed, 9 insertions, 1 deletions
diff --git a/docs/fs.md b/docs/fs.md
index 98a8638d..d60b4e73 100644
--- a/docs/fs.md
+++ b/docs/fs.md
@@ -401,7 +401,15 @@ lazy `*?` included), searched the way sam searches (editors/acme/regx.c): as
lines, so `^` and `$` match at the start and end of any line, `.` and a
negated class never match a newline, and `$` also matches at the end of a
text with no final newline. A pattern that names a newline (`\n`) runs over
-the whole text instead, its `.` kept to one line. An expression is
+the whole text instead, its `.` kept to one line; there a leading `^` still
+matches at every line start, and `$` may stand just before a `\n` (where it
+changes nothing). Any other `^` or `$` in such a pattern, `(^|\n)def` or
+`a\nb$`, is refused with `in a pattern with \n, ^ can only come first and $
+only just before a \n`, since mvzr would read it as the start or end of the
+whole text: never a search that silently finds nothing. Within a line, `^`
+inside an alternation (`^def|^ `) matches only where the search starts, so it
+works from a line's start (an `x` over lines, a `g` on one) and not from its
+middle: an mvzr limit. An expression is
evaluated from the current address, the range last written to `addr` (or
left by the last `data` write, just past it), as acme evaluates it from
`w->addr` (xfid.c:446): `.` is that address, not the selection (`dot` is