Here's an idea I've been working on. We generate tags for all files the current project contains (except the ignored ones) when the user calls one of the xref commands, but hasn't explicitly visited any tags table. The result is used until they make a change in a file somewhere and save the buffer, then the generated table is discarded. I think it will be helpful for new users (who don't really know how to generate tags), as well as people who are used to certain other editors performing the indexing automatically, in small-to-medium sized projects. With some effort, we could implement re-indexing and invalidation on a more granular level (so it's usable in bigger projects too), but transitioning to GNU Global would probably be better. For reference, indexing the Emacs sources takes ~1.1sec here. What do people think? See the attached patch.