GNU bug report logs - #56217
26.3; Elisp manual: Document keyword parameters to a function (lambda list)

Previous Next

Package: emacs;

Reported by: Drew Adams <drew.adams <at> oracle.com>

Date: Sat, 25 Jun 2022 16:28:02 UTC

Severity: normal

Found in version 26.3

To reply to this bug, email your comments to 56217 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#56217; Package emacs. (Sat, 25 Jun 2022 16:28:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Drew Adams <drew.adams <at> oracle.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 25 Jun 2022 16:28:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: 26.3; Elisp manual: Document keyword parameters to a function (lambda
 list)
Date: Sat, 25 Jun 2022 16:27:04 +0000
Searching the Index of the Elisp manual for "keyword", I don't see any
entries that help you get to doc about keyword parameters in a lambda
list.  (I mean the use of a keyword such as :keymap with
`define-minor-mode', not a description of things like `&rest'.)

Please add some index entries for this.

What's more, I don't even find any presentation in the manual about
keyword parameters, except for the mention more or less in passing of
some specific keyword parameters in node `Defining Minor Modes'.  Please
add a description.  Users should get info about how
actual arguments are processed - e.g., in what order, when for example,
optional and keyword args are both accepted by a function.

(It's possible that there _is_ some such specification/explanation of
what keyword parameters are, and how they're processed - e.g., in what
order, but I didn't find any.)

Keyword args are particular, in that to pass one you pass _two_ Lisp
values: first the keyword symbol and then the value for that keyword.
That isn't the case for other arguments.

In addition there's the question of whether supplied keyword args
are included in those accumulated for the &rest arg.

See Common Lisp for how it handles this:

  Next, any keyword parameters are processed. For this purpose the
  same arguments are processed that would be made into a list for a
  rest parameter. (Indeed, it is permitted to specify both &rest and
  &key. In this case the remaining arguments are used for both
  purposes; that is, all remaining arguments are made into a list
  for the &rest parameter and are also processed for the &key
  parameters. This is the only situation in which an argument is
  used in the processing of more than one parameter specifier.)

  -- Common Lisp The Language (2), section 5.2.2, Lambda-Expressions

Whatever the Elisp way of handling keyword parameters might be,
it should be clearly specified somewhere in the manual.  So far,
all I've found it a bit of hand-waving.

In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
 of 2019-08-29
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor `Microsoft Corp.', version 10.0.19044
Configured using:
 `configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''





This bug report was last modified 1 year and 277 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.