bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#67687: Feature request: automatic tags management


From: Dmitry Gutov
Subject: bug#67687: Feature request: automatic tags management
Date: Sun, 31 Dec 2023 17:21:39 +0200
User-agent: Mozilla Thunderbird

On 31/12/2023 09:07, Eli Zaretskii wrote:
Date: Sun, 31 Dec 2023 01:43:25 +0200
Cc: 67687@debbugs.gnu.org, eskinjp@gmail.com, stefankangas@gmail.com
From: Dmitry Gutov <dmitry@gutov.dev>

+;;;###autoload
+(put 'etags-regen-file-extensions 'safe-local-variable
+     (lambda (value) (and (listp value) (seq-every-p #'stringp value))))

Why not use list-of-strings-p here?

Again, that "core ELPA" consideration. We could deploy this feature to a
number of released Emacs versions, if we don't introduce such dependencies.

Isn't this covered by the compat package on ELPA?  If not, I think it
should be.

These forms go into generated autoloads file for each installed package
(*-autoloads.el). I think compat doesn't make list-of-string-p
autoloaded, and autoloads files don't usually have (require ...) forms.

So while I haven't really tested this and could be missing something, it
seems brittle to rely on 'compat' for this function (if at all possible).

It is also extremely ugly to have those large functions in a bundled
package, when we already have list-of-strings-p in Emacs 29.  So how
about defining list-of-strings-p in etags-regen for older versions,
and then using it in the safe-local-variable property?

Even that wouldn't work, I think, for the same reason: the autoloads file doesn't load the related package eagerly. Though I suppose we could force one specific function definition into autoloads.

Or some other
solution to make this more elegant.  Wanting to let users use this
with older Emacsen has its limits, and IMNSHO this one crosses that
limit.

We already do this in project.el for one variable, too.

If you like, we could simplify the forms further, though, dropping the string-match-p checks. Forms for etags-regen-file-extensions and etags-regen-ignores would look like the one for project-vc-extra-root-markers.

The form for etags-regen-lang-regexp-alist is not a lists-of-string-p to begin with, so it will be more complex (it's "alist of lists of strings").





reply via email to

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