Subject: bug#60730: 29.0.60; Free variable with :buffer keyword in ert-with-temp-file

From: "J.P." <[email-masked]>
Date: Sat, 28 Jan 2023 18:00:40 -0800

Eli Zaretskii <[email-masked]> writes:

> Thanks, but I'm not sure I follow: coding-system's name should always
> be quoted, as it's a symbol.  So why things like the below:
>
>    (ert-with-temp-file myfile :coding raw-text)
>
> are relevant?  AFAIU, they are a mistake: raw-text should be quoted,
> as in 'raw-text.

I shouldn't have included the keyword argument; it only muddies the
waters here. The correctness of the output, what we expect to see in the
expanded form, is of primary concern.

> Is the problem that a coding-system symbol is not quoted?

When the value of `coding-system-for-write' is non-nil, only quoting it
twice survives expansion:

  (setq coding-system-for-write ''raw-text)
  (ert-with-temp-file myfile)

  -> (let* ((coding-system-for-write 'raw-text) ...)

Otherwise, we get a free variable:

  (setq coding-system-for-write 'raw-text)
  (ert-with-temp-file myfile)

  -> (let* ((coding-system-for-write raw-text) ...)

BTW, I'm not setting `coding-system-for-write' myself. That's being done
by the diagnostic tool.