[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#62889: 29.0.60; (setopt ...) does not give "assignment to free varia
From: |
ar0x2ff |
Subject: |
bug#62889: 29.0.60; (setopt ...) does not give "assignment to free variable" warning |
Date: |
Tue, 18 Apr 2023 10:34:27 +0200 |
Philip Kaludercic writes:
> var2 should also not be highlighted, since the first argument to the
> function `customize-set-variable' is a symbol, and the byte compiler
> correctly states that it doesn't know that any variable "var2" will be
> defined.
>
> If you macroexpand setopt, you will see that it generates
>
> (setopt--set 'var3 2)
>
> which is all fine, since no functions are being invoked with undefined
> variables.
>
> The reason this makes sense is that not all user options have to be
> loaded when they are set. A number of them are even auto-loaded and
> will load the library for the necessary user-option setters if
> necessary.
I was aware of the "do not overwrite custom variable if set before library
load" mechanism, but I also seem to remember the (customize-set-variable ...)
function to throw "free variable" warnings (e.g. when i open custome.el), so i
kind of took for granted that it was correct behaviour.
Glad to know (setopt ...) works this way! No more warning suppress in my init
file :)