Commit graph

8045 commits

Author SHA1 Message Date
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
Stefan Kangas
0da8118dcb Use command substitution instead of raw keys in more places
* admin/authors.el (authors):
* lisp/abbrev.el (abbrev-suggest-show-report):
* lisp/calc/calc.el (calc-display-trail, calc):
* lisp/completion.el (completion-locate-db-error):
* lisp/dired-x.el (dired-extra-startup):
* lisp/emacs-lisp/package.el (package-install-selected-packages):
* lisp/emulation/viper.el (viper-mode):
* lisp/facemenu.el (list-colors-display):
* lisp/mail/emacsbug.el (report-emacs-bug-hook):
* lisp/mail/sendmail.el (mail):
* lisp/menu-bar.el (menu-bar-mode):
* lisp/org/org.el (org-revert-all-org-buffers):
* lisp/progmodes/antlr-mode.el (antlr-help-rules-intro)
(antlr-insert-makefile-rules):
* lisp/progmodes/gdb-mi.el (gdb--check-interpreter):
* lisp/progmodes/xscheme.el (xscheme-process-sentinel):
* lisp/ps-print.el (ps-font-info-database):
* lisp/recentf.el (recentf-edit-list, recentf-open-files):
* lisp/vc/ediff-util.el (ediff-suspend):
* lisp/vc/pcvs.el (cvs-mode):
* lisp/vc/vc-bzr.el (vc-bzr-dir-extra-headers): Use command
substitution.
2021-09-24 21:26:08 +02:00
Stefan Kangas
35d0675467 Prefer seq-random-elt to nth+random
* lisp/emacs-lisp/seq.el (seq-random-elt): Autoload.
* lisp/avoid.el (mouse-avoidance-random-shape):
* lisp/epa-ks.el (epa-ks--query-url):
* lisp/erc/erc-networks.el (erc-server-select):
* lisp/gnus/gnus-fun.el (gnus--random-face-with-type)
(gnus-fun-ppm-change-string):
* lisp/net/soap-inspect.el (soap-sample-value-for-xs-simple-type):
* lisp/obsolete/landmark.el (landmark-random-move):
* lisp/play/mpuz.el (mpuz-build-random-perm):
* lisp/play/zone.el (zone-pgm-stress):
* lisp/vc/add-log.el (add-change-log-entry):
* test/lisp/net/tramp-tests.el
(tramp-test44-asynchronous-requests): Prefer seq-random-elt to
nth+random.
2021-09-24 19:41:03 +02:00
Stefan Kangas
2932592469 ; * lisp/emacs-lisp/checkdoc.el (checkdoc-in-abbreviation-p): Doc fix. 2021-09-24 12:28:10 +02:00
Stefan Kangas
b12b278c2a checkdoc: Add abbreviation and simplify
* lisp/emacs-lisp/checkdoc.el (checkdoc-in-abbreviation-p): Add
abbreviation "a.k.a.".  Simplify.
2021-09-23 22:59:20 +02:00
Stefan Kangas
55083d90a3 Avoid jumping too far in checkdoc-in-abbreviation-p
* lisp/emacs-lisp/checkdoc.el (checkdoc-in-abbreviation-p): Use
'forward-ward' instead of 'forward-sexp' to avoid jumping too far in
some situations.  (Bug#50731)

* test/lisp/emacs-lisp/checkdoc-tests.el
(checkdoc-tests--abbrev-test): New helper function.
(checkdoc-tests-in-abbrevation-p/basic-case): Rename from
'checkdoc-tests-in-abbrevation-p'.
(checkdoc-tests-in-abbrevation-p/with-parens)
(checkdoc-tests-in-abbrevation-p/with-escaped-parens): Use above new
helper function.
(checkdoc-tests-in-abbrevation-p/single-char)
(checkdoc-tests-in-abbrevation-p/with-em-dash)
(checkdoc-tests-in-abbrevation-p/incorrect-abbreviation): New tests.
2021-09-23 22:35:40 +02:00
Lars Ingebrigtsen
bb3a045501 Improve error messaging from byte-compiling dotted lists
* lisp/emacs-lisp/cconv.el (cconv-analyze-form): Improve error
messaging when byte-compiling dotted lists (bug#35186).

Test case -- byte-compile the following file:

;;;  -*- lexical-binding: t -*-

(defun foo ()
  (+ 1 2)
  (a . b))
2021-09-22 23:47:04 +02:00
Lars Ingebrigtsen
2a73673809 Change how thread-first/thread-last indent the first argument
* lisp/doc-view.el (doc-view--current-cache-dir): Reindent.

* lisp/emacs-lisp/subr-x.el (thread-first):
(thread-last): Change indentation to match examples.
(internal--build-binding): Reindent.

* test/lisp/emacs-lisp/subr-x-tests.el
(subr-x-test-thread-first-function-names-are-threaded):
(subr-x-test-thread-first-examples):
(subr-x-test-thread-last-function-names-are-threaded):
(subr-x-test-thread-last-examples): Reindent.
2021-09-22 05:57:48 +02:00
Stefan Kangas
7f5ac1468d ; * etc/NEWS: Improve wording of an item.
* lisp/emacs-lisp/hierarchy.el: Improve wording of package description.
2021-09-21 22:21:31 +02:00
Lars Ingebrigtsen
85e9e5f616 Don't quote nil and t in doc strings and comments
* test/src/minibuf-tests.el (test-try-completion-ignore-case):
* test/lisp/url/url-auth-tests.el
(url-auth-test-digest-auth-retrieve-cache):
* test/lisp/subr-tests.el (subr-tests-add-hook-depth):
* test/lisp/so-long-tests/so-long-tests.el
(so-long-tests-invisible-buffer-function):
* test/lisp/emacs-lisp/tabulated-list-test.el (tabulated-list-sort):
* src/xfaces.c:
* src/process.c (Finterrupt_process):
(syms_of_process):
* src/minibuf.c (Fread_from_minibuffer):
(Fcompleting_read):
(syms_of_minibuf):
* src/dispnew.c (syms_of_display):
* src/data.c:
* lisp/so-long.el (so-long--hack-local-variables):
* lisp/progmodes/elisp-mode.el (elisp--xref-find-definitions):
(elisp--xref-find-definitions):
* lisp/org/ox-html.el (org-html-htmlize-output-type):
* lisp/org/org-agenda.el (org-agenda-do-in-region):
* lisp/net/tramp.el:
* lisp/minibuffer.el (set-minibuffer-message):
* lisp/isearch.el (isearch-wrap-pause):
(isearch-repeat-on-direction-change):
* lisp/emacs-lisp/timer.el (timer):
* lisp/emacs-lisp/package.el (package-read-archive-contents):
* lisp/emacs-lisp/faceup.el (faceup-next-property-change):
* lisp/emacs-lisp/comp.el (comp-func):
* lisp/emacs-lisp/comp-cstr.el (comp-cstr-empty-p):
* lisp/emacs-lisp/cl-macs.el (cl-do):
(cl-do*):
(cl--self-tco):
* lisp/emacs-lisp/bytecomp.el (byte-compile-unresolved-functions):
(byte-compile-cond-jump-table): Don't quote t and nil.
2021-09-21 22:11:43 +02:00
Lars Ingebrigtsen
be4f858498 Add new function `ensure-list'
* doc/lispref/lists.texi (Building Lists): Document it.

* lisp/subr.el (ensure-list): New function.

* lisp/emacs-lisp/shortdoc.el (list): Mention it.
2021-09-21 20:31:05 +02:00
Stefan Kangas
f41a4ec8e1 ; * lisp/emacs-lisp/checkdoc.el: Fix warnings. 2021-09-21 20:17:46 +02:00
Stefan Kangas
b2bb717d4b Minor clean-up and fixes in checkdoc
* lisp/emacs-lisp/checkdoc.el: Minor doc fixes.  Remove unnecessary
space at the end of 'y-or-n-p' prompts.  Move obsolete definitions to
the end of the file.
(checkdoc-symbol-words, checkdoc-common-verbs-wrong-voice): Add
some more common words.
2021-09-21 20:08:04 +02:00
Stefan Kangas
8f0806da1a checkdoc: New defvars to disable some warnings
* lisp/emacs-lisp/checkdoc.el (checkdoc--argument-missing-flag)
(checkdoc--disambiguate-symbol-flag)
(checkdoc--interactive-docstring-flag): New defvars to disable some
warnings.  These are intended for use with Emacs itself rather than
with third-party libraries.
(checkdoc-this-string-valid, checkdoc-this-string-valid-engine):
Respect above new variables.
2021-09-21 20:07:30 +02:00
Stefan Kangas
1c73c0b33a Add new command 'checkdoc-dired'
* lisp/emacs-lisp/checkdoc.el (checkdoc-dired): New command.
(checkdoc--dired-skip-lines-re): New constant.
2021-09-21 20:02:19 +02:00
Basil L. Contovounesios
14495e33af Consistently test alist keys with equal in map.el
* etc/NEWS: Announce new default behavior of map-elt and map-delete
on alists.

* lisp/emacs-lisp/map.el: Bump to version 3.2.
(map-elt): Test alist keys with equal by default.  Betray a little
bit more information in the docstring on which functions are used
for which map types.  (Bug#47368)
(map-put): Update docstring accordingly.
(map--plist-delete): Consistently test plist keys with eq.
(map-delete): Consistently test alist keys with equal.

* test/lisp/emacs-lisp/map-tests.el (test-map-elt-testfn): Update
for new map-elt behavior.
(test-map-put!-alist, test-map-delete-alist): New tests.
2021-09-21 13:32:49 +01:00
Stefan Kangas
3c51343536 Revert "Flag checkdoc-symbol-words as a :safe variable"
There was no need for this change, as this variable was already marked
as :safe.

This reverts commit 222a7a1a8a.
2021-09-19 22:29:29 +02:00
王滋涵 Zephyr Wang
bbb9e97537 ; Fix typo in package.el doc string
* lisp/emacs-lisp/package.el (package-archive-column-width): Fix
copy-paste in doc string (bug#50678).

Copyright-paperwork-exempt: yes
2021-09-19 17:40:00 +02:00
Stefan Kangas
86837a87b7 Clarify docstring of pcase-exhaustive
* lisp/emacs-lisp/pcase.el (pcase-exhaustive): Clarify docstring
by contrasting with pcase.  (Bug#44166)
2021-09-19 17:25:39 +02:00
Stefan Kangas
83508013a8 checkdoc: Verify format of yes-or-no-p and format-message
* lisp/emacs-lisp/checkdoc.el (checkdoc-message-text-next-string):
Check also for "yes-or-no-p" and "format-message".  Convert regexps to
use rx.
2021-09-19 15:55:06 +02:00
Stefan Kangas
222a7a1a8a Flag checkdoc-symbol-words as a :safe variable
* lisp/emacs-lisp/checkdoc.el (checkdoc-symbol-words): Flag as a safe
file local variable.
2021-09-19 13:13:56 +02:00
Stefan Kangas
c1e45419c7 Use command substitution in checkdoc-recursive-edit
* lisp/emacs-lisp/checkdoc.el (checkdoc-recursive-edit): Use command
substitution.
(checkdoc--help-buffer): New variable.  Use it instead of hard-coded
string.
2021-09-18 23:26:25 +02:00
Stefan Kangas
ec0527d8e9 Use command substitution for exit-recursive-edit
* lisp/bindings.el (mode-line-modes):
* lisp/emacs-lisp/checkdoc.el (checkdoc-recursive-edit): Use command
substitution for 'exit-recursive-edit'.
2021-09-18 23:26:18 +02:00
Eli Zaretskii
83e3d8d879 Improve doc strings of a recent commit
* lisp/emacs-lisp/generator.el (iter-defun):
* lisp/emacs-lisp/comp.el (comp-clean-up-stale-eln):
* lisp/emacs-lisp/bytecomp.el (byte-compile-lapcode):
* lisp/emacs-lisp/autoload.el (autoload-insert-section-header):
Include description of arguments in the doc string's first line.
2021-09-18 14:56:55 +03:00