emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Generation of tags for the current project on the fly


From: Dmitry Gutov
Subject: Re: Generation of tags for the current project on the fly
Date: Wed, 17 Jan 2018 00:56:01 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:58.0) Gecko/20100101 Thunderbird/58.0

On 1/16/18 20:50, Eli Zaretskii wrote:

Incremental tagging needs to leave the record about what was tagged
somewhere, right?

The information is inside the TAGS file, isn't it? Even though it's in a flat list, unsorted, spread throughout the file.

I was thinking that maybe we can add this feature simply using some clever engineering, without changing the format of the file.

And I think it should be fairly easy (in terms of the algorithm, at least) to implement incremental update for one-to-few files: you scan through the file, remove the corresponding entries, and then scan the files (ones that still exist) and add those entries at the end.

Might be slower to incrementally update when passed (almost) the same list of files, like 'make tags' does. It has higher complexity on paper (looking for/matching file names), but maybe it would still yield a measurable improvement over a full reindex.

Since there's no such feature in etags now, this
sounds like a project for which I won't have time any time soon.  Any
volunteers?

Not volunteering yet. Could be something I might have time for a few months from now, depending on whether we have a solid plan and you'll want to provide some hand-holding.

I more or less imagine how I'd implement such a feature using Lisp and
'etags --append', but that would do nothing to help when the tags are
generated by make.

It will also not help if Emacs is restarted, right?

Right, but it will do a full scan after the restart. Spending a longer amount of time just once per project per restart is more or less fine, I think. Especially after an explicit prompt (I've added one now, you can see it on the branch).




reply via email to

[Prev in Thread] Current Thread [Next in Thread]