unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: philipk@posteo.net, tom@tromey.com, emacs-devel@gnu.org,
	john@yates-sheets.org
Subject: Re: Automatic (e)tags generation and incremental updates
Date: Wed, 13 Jan 2021 00:26:50 +0200	[thread overview]
Message-ID: <09159508-db02-75f8-ec4e-692c62360905@yandex.ru> (raw)
In-Reply-To: <83y2gyca4z.fsf@gnu.org>

On 12.01.2021 19:55, Eli Zaretskii wrote:
>> Cc: tom@tromey.com, john@yates-sheets.org, philipk@posteo.net,
>>   emacs-devel@gnu.org
>> From: Dmitry Gutov <dgutov@yandex.ru>
>> Date: Tue, 12 Jan 2021 19:32:18 +0200
>>
>>> What about regenerating etags only if M-. etc. fail to find an
>>> identifier?
>>
>> There are downsides.
>>
>> You will have to press M-. twice sometimes with that approach.
> 
> Why twice? I thought about regenerating automatically once the search
> fails, then retrying the search with an updated tags table.

Hm, I guess we can do that.

Still, I try to navigate to unknown symbols often enough. It can be an 
unfamiliar class, I don't know if it's defined here or in some 
dependency library... If every time I did that Emacs froze for, say, a 
second, and I didn't know the reasoning for it, my opinion of the editor 
would get pretty low.

So it might be a fine approach, but you have to know what it's doing and 
why. So, off by default.

>> Completion will routinely fail to show some tags that should be present.
>> Also, if the rescan takes a while, I'm not sure you'd want to do that on
>> every 'M-.' failure.
> 
> You could also regenerate when the user switches to another branch.
> That's not a very frequent thing to do.

That can be part of it. So far the options seem to be:

- Brute-force it with project-files and 'stat', checking to see which 
files were added, which removed, and which ones have modtime more recent 
than the previous update.

- Do something clever with Git. I.e. track the current revision, see 
whether it changed and which files changed with it, and also check the 
modtimes of untracked files.

- inotify. Seems to be the most effort-intensive option. I've also seen 
the 'watchman' program (by Facebook) mentioned as pretty reliable, but 
depending on it is probably not great.

Anyway, if you have any suggestions regarding how to write the file 
quicker (and why utf-8-emacs coding didn't help), that would be great.



  reply	other threads:[~2021-01-12 22:26 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-14  3:36 Automatic (e)tags generation and incremental updates Dmitry Gutov
2021-01-07  3:46 ` Dmitry Gutov
2021-01-07 14:15   ` Eli Zaretskii
2021-01-07 15:56     ` Dmitry Gutov
2021-01-07 16:17       ` Stefan Kangas
2021-01-09 21:49       ` Tom Tromey
2021-01-10 13:53         ` Dmitry Gutov
2021-01-10 16:56           ` Tom Tromey
2021-01-10 19:39             ` Tom Tromey
2021-01-10 23:09               ` Dmitry Gutov
2021-01-10 23:36             ` Dmitry Gutov
2021-01-10 23:50               ` Dmitry Gutov
2021-01-11 14:56                 ` Eli Zaretskii
2021-01-12  1:33                   ` Dmitry Gutov
2021-01-12  4:21                     ` Stefan Monnier
2021-01-12 16:59                       ` Dmitry Gutov
2021-01-12 17:24                         ` Stefan Monnier
2021-01-12 15:08                     ` Eli Zaretskii
2021-01-12 16:48                       ` Dmitry Gutov
2021-01-12 17:15                         ` Eli Zaretskii
2021-01-12 17:32                           ` Dmitry Gutov
2021-01-12 17:55                             ` Eli Zaretskii
2021-01-12 22:26                               ` Dmitry Gutov [this message]
2021-01-13 15:01                                 ` Eli Zaretskii
2021-01-13 15:52                                   ` Dmitry Gutov
2021-01-13 15:58                                     ` Eli Zaretskii
2021-01-16  3:57                                       ` Dmitry Gutov
2021-01-16  7:34                                         ` Eli Zaretskii
2021-01-10 16:49         ` Eli Zaretskii
2021-01-10 16:58           ` Tom Tromey
2021-01-10 17:56           ` Dmitry Gutov
2021-01-10 18:14             ` Eli Zaretskii
2021-01-10 23:13               ` Dmitry Gutov
2021-01-11 14:53                 ` Eli Zaretskii
2021-01-12  1:49                   ` Dmitry Gutov
2021-01-12 15:09                     ` Eli Zaretskii
2021-02-18 23:26       ` Dmitry Gutov
2021-02-19  8:33         ` Eli Zaretskii
2021-02-19 14:35           ` Dmitry Gutov
2021-02-19 15:44             ` Eli Zaretskii
2021-02-20  1:35               ` Dmitry Gutov
2021-02-20  7:30                 ` Eli Zaretskii
2021-02-20 20:27                   ` Dmitry Gutov
2021-02-20 20:41                     ` Eli Zaretskii
2021-02-20 21:05                       ` Dmitry Gutov
2021-02-20 21:14                       ` Dmitry Gutov
2021-02-21 19:53                         ` Eli Zaretskii
2021-02-21 20:39                           ` Dmitry Gutov
2021-02-22 16:08                             ` Eli Zaretskii
2021-02-22 19:25                               ` Dmitry Gutov
2021-02-22 19:33                                 ` Eli Zaretskii
2021-02-23  1:15                                   ` Dmitry Gutov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=09159508-db02-75f8-ec4e-692c62360905@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=john@yates-sheets.org \
    --cc=philipk@posteo.net \
    --cc=tom@tromey.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).