[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#27818: 26.0.50; *occur* buffer misses one match
From: |
Andreas Schwab |
Subject: |
bug#27818: 26.0.50; *occur* buffer misses one match |
Date: |
Tue, 25 Jul 2017 11:21:00 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/25.2 (gnu/linux) |
On Jul 25 2017, Dani Moncayo <dmoncayo@gmail.com> wrote:
> Recipe from "emacs -Q":
>
> 1. Create a new buffer and put there these four lines:
> ---begin-of-buffer---------
> w1 # word 1
> w2 # word 2
> w3 # word 3
> w4 # word 4
> ---end-of-buffer---------
>
> 2. Search for the following regexp:
> "[^[:alnum:]]\(w2\|w3\)[^[:alnum:]]" (without the quotes)
>
> 3. End the search and type "C-M-s M-p RET M-s o" to launch an *occur* buffer.
>
> The search actually has 2 matches but the *occur* buffer shows only one of
> them:
The occur engine only considers non-overlapping matches and extends each
match to complete lines.
> ---begin-of-buffer---------
> 1 match for "[^[:alnum:]]\(w2\|w3\)[^[:alnum:]]" in buffer: foo
> 1:w1 # word 1
> :w2 # word 2
> ---end-of-buffer---------
Note how the first [^[:alnum:]] matches the newline preceding w2, thus
the match includes also line 1. The next match would start at the
newline in line 2, but that would overlap with the first match.
Andreas.
--
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE 1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."