Subject: bug#51661: 29.0.50; What is "interactive Lisp closure"?

From: Lars Ingebrigtsen <[email-masked]>
Date: Sun, 07 Nov 2021 15:10:22 +0100

Eli Zaretskii <[email-masked]> writes:

> No.  But emoji.el says this:
>
>       (insert ";; Local" " Variables:
>   ;; coding: utf-8
>   ;; version-control: never
>   ;; no-byte-compile: t
>   ;; no-update-autoloads: t
>   ;; End:
>
>   (provide 'emoji-labels)
>
> and that trips the 'compile-main' target in lisp/Makefile to think
> this file should not be byte-compiled.

D'oh.  I thought my obfuscation there was sufficient.  I'll get fixing.

> I think we should replace "closure" by "function" in the Help buffer.
> There's no need to show this to users.

Let's see...  it's this code?  I'm guessing Stefan M wrote this, so I'm
adding him to the CCs.

(defun help-fns-function-description-header (function)
  "Print a line describing FUNCTION to `standard-output'."
  (pcase-let* ((`(,_real-function ,def ,aliased ,real-def)
                (help-fns--analyze-function function))
               (file-name (find-lisp-object-file-name function (if aliased 'defun
                                                                 def)))
               (beg (if (and (or (byte-code-function-p def)
                                 (keymapp def)
                                 (memq (car-safe def) '(macro lambda closure)))
                             (stringp file-name)
                             (help-fns--autoloaded-p function file-name))
                        (concat
                         "an autoloaded " (if (commandp def)
                                              "interactive "))
                      (if (commandp def) "an interactive " "a "))))

I don't really have an opinion.  I agree that "closure"/"lambda" here is
probably more information than most users have asked for, but on the
other hand, it's a reality, so how much of the details should we hide?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no