Commit graph

7868 commits

Author SHA1 Message Date
Stefan Monnier
2fcd34f202 * lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher): Fix regression 2021-10-01 15:34:09 -04:00
Tassilo Horn
e165bf3d49 ; If Invalid function: with-memoization error introduced in 3c972723 2021-10-01 21:15:51 +02:00
Stefan Monnier
3c972723e4 * lisp/emacs-lisp/subr-x.el (with-memoization): New macro
Extracted from `cl-generic.el`.

* lisp/emacs-lisp/cl-generic.el (cl--generic-get-dispatcher)
(cl--generic-build-combined-method, cl-generic-generalizers): Use it.
(cl--generic-with-memoization): Delete.
2021-10-01 14:33:37 -04:00
Lars Ingebrigtsen
4b90aacf79 Refactor out ert-test--erts-test
* lisp/emacs-lisp/ert.el (ert-test--erts-test): Refactor out the
bulk of the function for easier reuse.
2021-10-01 15:23:32 +02:00
akater
5988d6fa26 Restore the flet indentation fixes
* lisp/emacs-lisp/lisp-mode.el (lisp--local-defform-body-p): New
function.
(lisp-indent-function): Use it to fix cl-flet indentation.
2021-10-01 13:25:42 +02:00
Lars Ingebrigtsen
295d552e4e Allow skipping erts tests
* doc/misc/ert.texi (erts files): Document it.

* lisp/emacs-lisp/ert.el (ert-test-erts-file): Allow skipping tests.
2021-10-01 13:20:20 +02:00
Lars Ingebrigtsen
1a65320903 Add new functionality to write buffer-based tests
* doc/misc/ert.texi (erts files): New node.

* lisp/files.el (auto-mode-alist): Map .erts to erts-mode.

* lisp/emacs-lisp/ert.el (ert-test-erts-file): New function.

* lisp/emacs-lisp/ert.el (ert--erts-specifications)
(ert--erts-unquote): Helper functions.

* lisp/progmodes/erts-mode.el: New mode and file.
2021-10-01 12:17:47 +02:00
Nikolay Kudryavtsev
8477d3b339 Make checkdoc's docstring substitution consistent with other docs
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
In error text, say "mapvar" instead of "keymap", and "command"
instead of "function", to be consistent with the ELisp manual.
(Bug#50903)
2021-09-30 19:24:35 +03:00
Mattias Engdegård
41723a329e Revert "Indent bodies of local function definitions properly in elisp-mode"
This reverts commit 38037e04cb.
2021-09-30 16:52:16 +02:00
Mattias Engdegård
be493ea67a Revert "Fix regressions in cl-flet indentation"
This reverts commit c42af5aee7.
2021-09-30 16:52:16 +02:00
akater
c42af5aee7 Fix regressions in cl-flet indentation
* lisp/emacs-lisp/lisp-mode.el (lisp--local-defform-body-p):
Rename (from -p-less form) and fix indentation regression
introduced by 38037e04cb
(bug#9622).  Also add cl-macrolet cl-flet* cl-symbol-macrolet.
2021-09-30 08:33:14 +02:00
Lars Ingebrigtsen
b4b4cc98ac Revert "Obsolete local set difference functions in favor of seq-difference"
This reverts commit 20f7fa691b.

gnus-set-difference is orders of magnitude faster than seq-difference
(on these sets), and using seq-difference makes nnimap too
slow.
2021-09-29 17:28:02 +02:00
Lars Ingebrigtsen
c4866ad1ac Tweak the whitespace before "This is a generic function"
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe): Make the
number of blank lines before this section consistent (whether
there's an indented section before it or not).
2021-09-29 08:25:14 +02:00
Stefan Kangas
7cc6e1dda7 Add shortdoc for text properties
* lisp/emacs-lisp/shortdoc.el (text-properties): New shortdoc.

e for your changes. Lines starting
2021-09-28 20:45:08 +02:00
Stefan Kangas
ccb35fb8fb Mention describe-symbol in cl-defstruct docstring
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Mention 'describe-symbol'
in docstring.
2021-09-28 18:38:10 +02:00
Stefan Kangas
b9611e9c7e Mention cl-describe-type in cl-defstruct docstring
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Mention
'cl-describe-type' in docstring.
2021-09-28 18:09:36 +02:00
Stefan Monnier
fa92b040c6 * lisp/emacs-lisp/map.el: Restore compatibility with Emacs-26
Don't use the new `eql` syntax.
2021-09-28 10:29:27 -04:00
Stefan Kangas
a5b8140d4e Improve docstrings of ert-resource-{directory,file}
* lisp/emacs-lisp/ert-x.el (ert-resource-directory)
(ert-resource-file): Improve docstrings.
2021-09-28 14:32:06 +02:00
Stefan Kangas
b27a8f1554 Signal error on newline in internal--format-docstring-line
* lisp/subr.el (internal--format-docstring-line): Signal error
when trying to fill a line containing a newline.

* lisp/cedet/semantic/decorate/mode.el
(define-semantic-decoration-style):
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode):
Don't pass newlines to 'internal--format-docstring-line'.
2021-09-28 14:15:00 +02:00
Eli Zaretskii
73b2b9f67a ; * lisp/emacs-lisp/comp.el (batch-native-compile): Don't use non-ASCII. 2021-09-28 15:03:38 +03:00
Eli Zaretskii
90655e4bc0 Make the build of source tarball produce *.eln files
* lisp/emacs-lisp/comp.el (batch-native-compile): Accept an
optional argument; if non-nil, place the .eln file as appropriate
for building a source tarball.

* doc/lispref/compile.texi (Native-Compilation Functions):
Document the new optional argument of 'batch-native-compile'.

* lisp/Makefile.in (.PHONY, $(THEFILE)n) [HAVE_NATIVE_COMP]: New
targets.

* src/Makefile.in (%.eln) [HAVE_NATIVE_COMP]: New recipe.
(all) [HAVE_NATIVE_COMP]: Add ../native-lisp to prerequisites.
(elnlisp) [HAVE_NATIVE_COMP]: New list of *.eln files.
(../native-lisp) [HAVE_NATIVE_COMP]: New recipe.

* src/verbose.mk.in (AM_V_ELN): New macro.
2021-09-28 15:00:50 +03:00
Eli Zaretskii
b02a7ad263 ; * lisp/emacs-lisp/comp.el (batch-native-compile): Doc fix. 2021-09-28 11:18:17 +03:00
Stefan Kangas
3cabf64131 checkdoc: Allow Lisp symbols to start a message
* lisp/emacs-lisp/checkdoc.el (checkdoc-message-text-engine): Allow
Lisp symbols to start a message.
(checkdoc--error-bad-format-p): New helper function.

* test/lisp/emacs-lisp/checkdoc-tests.el
(checkdoc-test-error-format-is-good)
(checkdoc-test-error-format-is-bad): New helper functions.
(checkdoc-tests-error-message-bad-format-p)
(checkdoc-tests-error-message-bad-format-p/defined-symbols)
(checkdoc-tests-error-message-bad-format-p/not-capitalized):
New tests.
2021-09-28 01:12:36 +02:00
Stefan Kangas
3d2d7e8ea2 Fix automatic filling of docstring in cl-defstruct
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Fix bug where a paragraph
was filled as if it were a single line, which led to garbled
output in the docstring.  (Bug#50839)

* test/lisp/subr-tests.el
(subr-test-internal--format-docstring-line): New test.
2021-09-27 11:47:55 +02:00
Stefan Kangas
77494628e2 checkdoc: Don't add "Commentary" header to test files
* lisp/emacs-lisp/checkdoc.el (checkdoc-file-comments-engine):
Don't add "Commentary:" header if it looks like a test file.
2021-09-26 20:23:59 +02:00
Stefan Kangas
b8b1d8dee7 Add fast-path to ert--explain-string-equal
* lisp/emacs-lisp/ert.el (ert--explain-string-equal): Add fast-path to
avoid doing extra work.
Problem reported by Mattias Engdegård <mattiase@acm.org>.
2021-09-26 15:30:40 +02:00
Stefan Kangas
3bab1476f6 Rename "Homepage" field to "Website" in package description
* lisp/emacs-lisp/package.el (describe-package-1): Rename
"Homepage" field to "Website".

* test/lisp/emacs-lisp/package-tests.el
(package-test-describe-package)
(package-test-describe-installed-multi-file-package)
(package-test-describe-non-installed-package)
(package-test-describe-non-installed-multi-file-package): Update tests.
2021-09-26 14:55:19 +02:00
Stefan Kangas
8ea1765fea Prefer https for other domains than gnu.org in package URL
* lisp/emacs-lisp/package.el (describe-package-1): Prefer https for
some other common domains in the package URL.
2021-09-26 14:55:19 +02:00
Stefan Kangas
a0d5de4fb9 Add test for lm-website
* lisp/emacs-lisp/lisp-mnt.el (lm-website): Use rx.
* test/lisp/emacs-lisp/lisp-mnt-tests.el
(lm--tests-lm-website): New test.
2021-09-26 14:55:19 +02:00
Stefan Kangas
c51b1c02db Warn about overly long docstring in lambda
* lisp/emacs-lisp/bytecomp.el
(byte-compile-docstring-length-warn): Warn about overly long
docstring in lambda.  (Bug#44858)

(byte-compile--wide-docstring-p): Improve comment.
* test/lisp/emacs-lisp/bytecomp-tests.el
("warn-wide-docstring-defun.el"): Update to test for the above new
warning.
2021-09-26 13:33:29 +02:00
Stefan Kangas
8c3ec4e3cc Fill some auto-generated docstring lines
* lisp/cedet/mode-local.el (define-mode-local-override):
* lisp/cedet/semantic/decorate/mode.el (define-semantic-decoration-style):
* lisp/cedet/semantic/idle.el (define-semantic-idle-service):
* lisp/emacs-lisp/derived.el (derived-mode-make-docstring):
* lisp/emacs-lisp/eieio.el (defclass): Fill auto-generated docstring
lines.
2021-09-26 13:23:57 +02:00
Stefan Kangas
f3a6fe2c7d Avoid false positives in bytecomp docstring width warning
* lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p):
Ignore more function argument lists.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests-byte-compile--wide-docstring-p): New test.
2021-09-26 13:23:57 +02:00
Stefan Kangas
c78e16962e ; Adjust overly long docstrings to fit 80 characters 2021-09-26 13:23:57 +02:00
Stefan Kangas
f4ea15907a ert: Add basic explainer for string-equal
* lisp/emacs-lisp/ert.el (ert--explain-string-equal): Add basic
explainer for 'string-equal' based on 'ert--explain-equal'.
2021-09-26 13:21:53 +02:00
Stefan Kangas
90948eb9d7 checkdoc: Library footer must match package.el requirement
* lisp/emacs-lisp/checkdoc.el (checkdoc-file-comments-engine):
Don't accept footer format unless it matches the requirement in
package.el.
2021-09-26 11:37:29 +02:00
Lars Ingebrigtsen
50798267f2 Expand the ` doc string slightly
* lisp/emacs-lisp/backquote.el (backquote): Note that ` is used
for other things in some macros (bug#25462).
2021-09-26 08:47:08 +02:00
Stefan Kangas
c92444b4ba ; Bump seq version to 2.23 2021-09-25 21:44:55 +02:00
Stefan Kangas
822625fde5 Revert part of previous doc fix
* lisp/emacs-lisp/derived.el (define-derived-mode): Revert part of
previous doc fix.  This change made the text confusing.  (Bug#17567)
2021-09-25 21:27:11 +02:00
Mattias Engdegård
45c32d7f00 Fix byte-compiler crash for legal dynamic-binding code
This should really be taken care of by a syntax normalisation step in
the frontend, but there is no such step for non-lexbind code yet.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-letX): Tolerate bindingsa
without initialising expressions.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases):
Add test cases.
2021-09-25 20:25:02 +02:00
Mattias Engdegård
8d0ee5e7a9 Constant-propagate variables bound outside loops
Previously, variables bound outside `while` loops were not substituted
inside even in the absense of mutation.  Add the necessary mutation
checking inside loops to allow propagation of values and aliased
variables.

* lisp/emacs-lisp/byte-opt.el
(byte-optimize--inhibit-outside-loop-constprop): New variable.
(byte-optimize-form-code-walker): First traverse each loop without
substitution to discover mutation, then without restrictions.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-test-loop): New.
(bytecomp-tests--test-cases): Add test cases.
2021-09-25 20:25:02 +02:00
Mattias Engdegård
0b099e34dc Use ambient lexical-binding value in ert-deftest body (bug#50738)
* lisp/emacs-lisp/ert.el (ert-deftest):
Evaluate the body of `ert-deftest` with the `lexical-binding` value of
the source file (or more precisely the value in force when the
definition is evaluated), which is what everyone expected, instead of
always using dynamic binding which is what they got until now.
* test/lisp/emacs-lisp/ert-tests.el
(ert-test-deftest-lexical-binding-t): New test.
2021-09-25 20:25:01 +02:00
Mattias Engdegård
ed02b88bba Renege on anonymous &rest (bug#50268, bug#50720)
Allowing &rest without a variable name following turned out not to be
very useful, and it never worked properly.  Disallow it.

* lisp/emacs-lisp/bytecomp.el (byte-compile-check-lambda-list):
* src/eval.c (funcall_lambda):
Signal error for &rest without variable name.
* doc/lispref/functions.texi (Argument List): Adjust manual.
* etc/NEWS (file): Announce.
* test/src/eval-tests.el (eval-tests--bugs-24912-and-24913):
Extend test, also checking with and without lexical binding.
(eval-tests-accept-empty-optional-rest): Reduce to...
(eval-tests-accept-empty-optional): ...this, again checking
with and without lexical binding.
2021-09-25 20:25:01 +02:00
Stefan Kangas
80fddff5d6 Clarify define-derived-mode docstring
* lisp/emacs-lisp/derived.el (define-derived-mode): Doc fixes;
correctly mention that the mode name is used in the mode line, clarify
argument types, and how the mode hook is named.  (Bug17567)

(derived-mode-hook-name, derived-mode-map-name)
(derived-mode-syntax-table-name, derived-mode-abbrev-table-name):
Clarify that argument is a symbol.
2021-09-25 19:02:31 +02:00
Stefan Kangas
293b8c71b2 Minor clarification of define-minor-mode :keymap argument
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode): Minor doc fix;
clarify by saying that ":keymap" should be an "unquoted variable
name".  (Bug#25505)
2021-09-25 17:54:49 +02:00
akater
38037e04cb Indent bodies of local function definitions properly in elisp-mode
* lisp/emacs-lisp/lisp-mode.el (lisp-indent-function): Check for
local defforms (`cl-flet' and `cl-labels').
(lisp--local-defform-body): New auxiliary function (bug#9622).
2021-09-25 03:34:37 +02:00
Stefan Kangas
2767c89db7 Fix alignment on font size change in tabulated-list-mode
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-print-col): Fix
bug where the columns didn't align correctly when using
'text-scale-mode' to decrease the font size.  (Bug#48639)
2021-09-25 00:33:21 +02:00
Stefan Kangas
d03995197d Doc fix; cl-random is only pseudo-random
* lisp/emacs-lisp/cl-extra.el (cl-random): Doc fix; say it's only
pseudo-random.
2021-09-25 00:05:55 +02:00
Stefan Kangas
79a9b50621 checkdoc: Don't ask to disambiguate mode names
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Don't ask to disambiguate mode names.  (Bug#4110)
2021-09-24 23:42:08 +02:00
Stefan Kangas
f17fb37c51 Fix recently introduced bug in checkdoc
* lisp/emacs-lisp/checkdoc.el (checkdoc-in-abbreviation-p): Fix
recently introduced bug where some abbreviations weren't recognized.
* test/lisp/emacs-lisp/checkdoc-tests.el
(checkdoc-tests-in-abbrevation-p/basic-case): Extend test.
2021-09-24 23:00:57 +02:00
Stefan Kangas
54cfadd92f checkdoc: Improve wide line warning to decrease false positives
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Respect 'byte-compile-docstring-max-column' if it is set.  Allow the
first line to be three characters longer than the others to account
for indentation and the opening string character.
2021-09-24 22:04:55 +02:00