Subject: bug#7351: 24.0.50; next-error no longer takes into account buffer modifications

From: Paul Pogonyshev <[email-masked]>
Date: Sun, 7 Nov 2010 01:26:27 +0200

When hitting C-x ` (next-error) the point is positioned correctly only
if the buffer is not modified.  If number of lines before the target
position is changed, point is positioned wrongly.

For instance, say 'test.txt' contains these lines:

    foo
    bar
    baz

I then run 'grep' from Emacs like this:

    grep -nH -e ba test.txt

Results:

    -*- mode: grep; default-directory: "/home/paul/test/" -*-
    Grep started at Sun Nov  7 01:25:17

    grep -nH -e ba test.txt
    test.txt:2:bar
    test.txt:3:baz

    Grep finished (matches found) at Sun Nov  7 01:25:17

Then I insert a few more lines in 'test.txt' buffer:

    foo
    bar
    spam
    ham
    baz

Now if I hit C-x ` the first time point is moved to line 2 --
correctly.  The second time, however, the point is moved to line 3,
i.e. the original location of 'baz'.  However, 'baz' is now at line 5
and that's where I expect C-x ` to move point to.  Note that at no
point I closed the buffer, so Emacs should be able to track changes
between 'grep' run and current buffer/file contents.

This is especially unhelpful with compilation errors.  Often, you'd go
through errors fixing them in process, sometimes adding or removing
lines.  However, any such change makes finding subsequent errors
difficult as C-x ` will no longer locate errors correctly.

I believe this used to work fine in past.

Paul