|Subject:||bug#23179: 25.0.92; Restore `M-,' to continue etags search|
|Date:||Mon, 4 Apr 2016 10:43:52 +0200|
I would suggest that xref should provide two kinds of searches:
one incremental (like `tags-search') and one `find-all' (like the
Patch welcome, I suppose, but the current API is not amenable to such usage, so see below (++).
* The xref UI window is not updated to reflect the current location. For
example, in a *grep* buffer, the cursor move and an arrow in the left
fringe reflect the current location.
Not updated when? When you call `next-error'? I imagine that's something to implement in that facility, then, so that every other mode implementing next-error-function benefits.
* I like the touch that the matches in the *xref* buffer are syntax
highlighted. Unfortunately, not all matches are highlighted. It appears
as though only matches in previously viewed parts of source files retain
Only those already visited by font-lock, yes.
* `next-error' issued from an *xref* search don't reuse the source
windows (whereas a `next-error' issued from a grep buffer does).
* `next-error' in ChangeLog buffers cause Emacs to go to the
corresponding change. This makes it hard to step past irrelevant xref
matches if they occur a ChangeLog file.
+++ Using "etags *.h *.m *.c" in the Emacs "src" directory,
`(tags-search "nstrace")' find the first occurrence in 0.7 seconds,
whereas the new `tags-find-regexp' takes over 8 seconds to perform a
The previous UI has pathological cases as well. Take e.g. some project where "xyz" only occurs in the last file among those listed in TAGS. Searching through all of those, by opening each one in Emacs in sequence, with re-search-forward, is surely slower that using Grep.
On the other hand, yes, the fact that the matches don't appear as soon as they're available, is a problem. Could you open a separate bug for that?
In other words, I would prefer if we would add an incremental xref
query-replace command along the lines I suggested for the search command
It would need to know where to get the matches from. Or you'll end with N new query-replace commands, just like we have now (tags-query-replace, dired-do-query-replace-regexp, etc).
Finally, if all the tags commands should be made obsolete, their
documentations should be updated with references to the commands that
are intended to replace them.
We do that with "(declare (obsolete ...".
|[Prev in Thread]||Current Thread||[Next in Thread]|