emacs-devel
[Top][All Lists]
Advanced

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

Re: Unsafe local variable in eglot.el


From: João Távora
Subject: Re: Unsafe local variable in eglot.el
Date: Thu, 9 Mar 2023 09:31:36 +0000

On Thu, Mar 9, 2023 at 8:00 AM Eli Zaretskii <eliz@gnu.org> wrote:
>
> João,
>
> This recent change:
>
>   commit 0a4b1c0102d4062d24e19340f863b9df25e07ab3
>   Author:     Joao Távora <joaotavora@gmail.com>
>   AuthorDate: Wed Mar 1 13:24:07 2023 +0000
>   Commit:     Joao Távora <joaotavora@gmail.com>
>   CommitDate: Wed Mar 1 13:27:06 2023 +0000
>
>       ; Eglot: improve bug-reference-url-format/bug-reference-url-regexp
>
>       * lisp/progmodes/eglot.el (eglot--debbugs-or-github-bug-uri): New 
> helper.
>
> causes trouble when visiting eglot.el.

I've reproduced it with

  cd path/to/Emacs
  src/emacs -Q lisp/progmodes/eglot.el

But curiously, this doesn't reproduce it

  src/emacs -Q
  C-h f eglot RET
  C-x o TAB RET  ;; to visit the "eglot.el" link

Why is that?

Anyway, I just followed the docstring:

  bug-reference-url-format is a variable defined in `bug-reference.el'.

  Its value is `eglot--debbugs-or-github-bug-uri'
  Local in buffer eglot.el; global value is nil

  Format used to turn a bug number into a URL.
  The bug number is supplied as a string, so this should have a single %s.
  This can also be a function designator; it is called without arguments
   and should return a string.
  It can use `match-string' to get parts matched against
  `bug-reference-bug-regexp', specifically:
   1. issue kind (bug, patch, rfe &c)
   2. issue number.

  There is no default setting for this, it must be set per file.
  If you set it to a symbol in the file Local Variables section,
  you need to add a `bug-reference-url-format' property to it:
  (put 'my-bug-reference-url-format 'bug-reference-url-format t)
  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  so that it is considered safe, see `enable-local-variables'.

> First, this pops up the "variable may not be safe" buffer about the
> variable bug-reference-url-format, even if I use Emacs 29, let alone
> if I use older Emacs versions.
>
> And second, if I say "y" to the "apply unsafe variable" prompt, then
> with the following jit-lock settings:
>
>   (setq jit-lock-stealth-time 16)
>   (setq jit-lock-stealth-nice 0.5)
>   (setq jit-lock-stealth-verbose t)
>   (setq jit-lock-defer-contextually t)
>   (setq jit-lock-stealth-load 20)
>
> I get an error from jit-lock-stealth's timer:
>
>   Error running timer ‘jit-lock-stealth-fontify’: (void-function 
> eglot--debbugs-or-github-bug-uri)
>
> The only way of avoiding these two issues is to say "n" to the prompt
> asking whether to apply the variable, but that's not really a good
> workaround, is it?
>
> Can these problems be solved, please, preferably in a way that older
> Emacsen will also be happy (since Eglot is an ELPA package)?

Maybe the function can be autoloaded?

But is a significant number of people using older emacsen to edit
Emacs's lisp/progmodes/eglot.el?  As far as I've seen just now,
if you launch an older Emacs to edit Emacs code, you warnings
about unsafe local variables in Emacs's own top-evel .dir-locals.el.

Until a solution is found, feel free to revert this change,
because this is just a minor convenience, and mostly just
for me (though it _is_ quite convenient).

João



reply via email to

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