Subject: bug#32284: closed (Re: bug#32284: special form documentation)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 28 Jul 2018 07:27:01 +0000

Your bug report

#32284: special form documentation

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
32284: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32284
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#32284: special form documentation
From: Eli Zaretskii <[email-masked]>
To: Brett Gilio <[email-masked]>
Cc: [email-masked], [email-masked]
Date: Sat, 28 Jul 2018 10:26:43 +0300
List-Id: <debbugs-submit.debbugs.gnu.org>

> From: Brett Gilio <[email-masked]>
> Date: Thu, 26 Jul 2018 19:04:32 -0500
> Cc: [email-masked]
> 
> Anybody else have any input?

I do: the point about track-mouse is correct: it used to be a special
form (implemented in C), but nowadays is a macro.  So I removed it
from the list of special forms.

I didn't do anything about 'lambda', because its user-facing behavior
is that of a special form, and the fact that it is a thin wrapper
around 'function' is an implementation detail that doesn't necessarily
matter in this context.

With that, I'm closing this bug report.

Thanks.

Subject: special form documentation
From: Nicholas Drozd <[email-masked]>
To: [email-masked]
Date: Thu, 26 Jul 2018 17:44:17 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

The Elisp manual section on Special Forms (10.2.7) lists around two dozen
special forms, but two of them aren't special forms.

* `lambda', it turns out, is not a special form, but a macro that wraps
itself in a call to the special form `function'. (The documentation for
`lambda' refers to it as "self-quoting"; this might be better changed to
"self-evaluating".)

* `track-mouse' isn't a special form, but a macro wrapper around the
primitive function `internal--track-mouse', which isn't a special form
either. (Section 29.15 on Mouse Tracking also inaccruately refers to
`track-mouse' as a special form.)

On the other hand, the special form `inline' is not listed in the Special
Forms section.

A list of all special forms can be gotten with

(let (special-forms)
  (mapatoms
   (lambda (sym)
     (when (special-form-p sym)
       (push sym special-forms))))
  (sort special-forms #'string<))