Make occur handle multi-line matches cleanly with context.
authorJuri Linkov <juri@jurta.org>
Tue, 30 Mar 2010 16:03:08 +0000 (19:03 +0300)
committerJuri Linkov <juri@jurta.org>
Tue, 30 Mar 2010 16:03:08 +0000 (19:03 +0300)
commitdc2d2590b24f7e4ee648b5d073ba744fbda7a4d8
tree8d15261ebed74c762df72b14eb4023534c784520
parent47c88c067f98772d5b505d7b6ad3d0909da5f68a
Make occur handle multi-line matches cleanly with context.
http://lists.gnu.org/archive/html/emacs-devel/2010-03/msg01280.html

* replace.el (occur-accumulate-lines): Add optional arg `pt'.
(occur-engine): Add local variables `ret', `prev-after-lines',
`prev-lines'.  Use more arguments for `occur-context-lines'.
Set first elem of its returned list to `data', and the second elem
to `prev-after-lines'.  Don't print the separator line.
In the end, print remaining context after-lines.
(occur-context-lines): Add new arguments `begpt', `endpt',
`lines', `prev-lines', `prev-after-lines'.  Rewrite to combine
after-lines of the previous match with before-lines of the
current match and not overlap them.  Return a list with two
values: the output line and the list of context after-lines.

* search.texi (Other Repeating Search): Remove line that `occur'
can not handle multiline matches.

* occur-testsuite.el (occur-tests): Add tests for context lines.
doc/emacs/ChangeLog
doc/emacs/search.texi
etc/TODO
lisp/ChangeLog
lisp/replace.el
test/ChangeLog
test/occur-testsuite.el