Commit graph

8028 commits

Author SHA1 Message Date
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
Stefan Kangas
dd1220b969 ; More stylistic docfixes in emacs-lisp/*.el found by checkdoc 2021-09-18 13:14:50 +02:00
Stefan Kangas
c1356d3a05 * lisp/emacs-lisp/checkdoc.el: Doc fix; mention flymake. 2021-09-18 11:24:31 +02:00
Stefan Kangas
00b6a56f0a Do interactive mode tagging for checkdoc.el 2021-09-18 11:21:32 +02:00
Stefan Kangas
6084c7e0f4 checkdoc: Only look for commonly used modifier keys
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Search for the modifier key "s-", but not the modifier key "A-".
The latter is very uncommon and leads to false positives.
2021-09-18 10:44:32 +02:00
Stefan Kangas
b6bff3ba79 checkdoc: 'y-or-n-p' no longer needs space
* lisp/emacs-lisp/checkdoc.el (checkdoc-message-text-engine):
Change 'y-or-n-p' check to accept prompt ending with both "? " or "?",
that is, it no longer needs the space.  (Bug#50621)
(checkdoc--fix-y-or-n-p): New helper function.
* test/lisp/emacs-lisp/checkdoc-tests.el (checkdoc-tests-fix-y-or-n-p)
(checkdoc-tests-fix-y-or-n-p/no-change)
(checkdoc-tests-fix-y-or-n-p/with-space): New tests.
2021-09-17 22:24:12 +02:00
Stefan Kangas
3e5298fc96 Improve performance of seq-union
* lisp/emacs-lisp/seq.el (seq-union): Improve performance by using
nreverse instead of seq-reverse.
2021-09-17 14:01:20 +02:00
Stefan Kangas
fb9df9b883 Make ediff-union into obsolete alias for seq-union
* lisp/emacs-lisp/seq.el (seq-union): Autoload.
* lisp/vc/ediff-util.el (ediff-union): Make into obsolete function
alias for 'seq-union'.
* lisp/vc/ediff-mult.el (ediff-intersect-directories): Update single
caller.
2021-09-17 11:05:06 +02:00
Stefan Kangas
0cf0a2b986 Add new sequence function 'seq-union'
* lisp/emacs-lisp/seq.el (seq-union): New function.
* doc/lispref/sequences.texi (Sequence Functions):
* lisp/emacs-lisp/shortdoc.el (sequence): Document above new
function.
* test/lisp/emacs-lisp/seq-tests.el (test-seq-union): New test.
2021-09-17 11:03:39 +02:00
Stefan Kangas
63f419f133 ; Minor stylistic fixes found by checkdoc 2021-09-16 19:37:07 +02:00
Eli Zaretskii
a38675ca88 Support '...' quoting in Lisp files
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2):
Support quoting 'like this'.
2021-09-16 17:10:49 +03:00
Stefan Kangas
bcf59b99f4 Prefer "website" to "homepage"
These days, a "home page" is understood to be only "the main web page
of a website" or "landing page", whereas a "website" is "a collection
of web pages and related content" (Wikipedia).

* doc/emacs/emacs.texi (Top):
* doc/emacs/package.texi (Package Menu):
* doc/lispintro/emacs-lisp-intro.texi (Top):
* doc/lispref/elisp.texi (Top):
* doc/lispref/tips.texi (Documentation Tips):
* doc/misc/ede.texi (ede-project):
* doc/misc/efaq-w32.texi (More information):
* doc/misc/gnus-faq.texi (FAQ 5-7):
* doc/misc/gnus.texi (About mairix):
* doc/misc/mairix-el.texi (About):
* doc/misc/reftex.texi (AUCTeX, Imprint):
* lisp/cedet/ede/base.el (ede-project):
* lisp/cedet/ede/system.el (ede-web-browse-home):
* lisp/emacs-lisp/package.el (package-menu-mode-menu)
(package-browse-url):
* lisp/erc/erc-button.el (erc-emacswiki-url):
* lisp/filesets.el (filesets-goto-homepage):
* lisp/net/mairix.el:
* lisp/net/webjump.el (webjump-sample-sites):
* lisp/obsolete/vc-arch.el:
* lisp/progmodes/idlw-shell.el (idlwave-shell-mode):
* lisp/progmodes/idlwave.el (idlwave, idlwave-mode):
* lisp/textmodes/reftex-vars.el (reftex):
Prefer "website" to "home page".

* doc/lispref/tips.texi (Documentation Tips):
Sort the "URL" header comment before "Homepage".

* lisp/emacs-lisp/lisp-mnt.el
(lm-website): Rename from 'lm-homepage'.
(lm-homepage): Make into alias for 'lm-website'.
2021-09-16 15:42:44 +02:00
Stefan Kangas
b049f373ef Various minor checkdoc tweaks
* lisp/emacs-lisp/checkdoc.el (checkdoc-symbol-words): Add more
"good" words that are used a lot in practice, and where using them
doesn't really hurt the quality of the documentation.
(checkdoc-proper-noun-list): Add "dired", remove "ispell"; the
latter should not always be capitalized.
(checkdoc-common-verbs-wrong-voice): Add some more common words.
Don't check for "matches" as it leads to too many false positives and
almost no fixes in practice.
(checkdoc-this-string-valid-engine): Clarify comment.
(checkdoc-in-abbreviation-p): Ignore some less common or non-standard
abbreviations.
2021-09-16 11:36:26 +02:00
Stefan Kangas
0762c7c67f checkdoc: Don't warn about command substitutions by default
* lisp/emacs-lisp/checkdoc.el (checkdoc-max-keyref-before-warn):
Add new valid value nil meaning to never warn about too many command
substitutions, and use this value as the default.  This is no longer a
performance problem on modern machines.  (Bug#50599)
(checkdoc-this-string-valid-engine): Respect above new valid value
nil.
2021-09-15 20:35:35 +02:00
Glenn Morris
89068554d7 * lisp/emacs-lisp/checkdoc.el (checkdoc-symbol-words): Fix type. 2021-09-14 08:05:29 -07:00
Lars Ingebrigtsen
159dbd5eb2 Make `find-function-source-path' into obsolete alias
* lisp/finder.el (finder-commentary): Adjust usage.

* lisp/emacs-lisp/find-func.el (find-function-source-path): Made
into obsolete alias (bug#50508).
(find-library-source-path): New name.
(find-library-name, find-library, find-function-noselect)
(find-variable-noselect, find-definition-noselect): Adjust usage
and update doc strings.
2021-09-14 13:44:20 +02:00
Stefan Kangas
5cd5cc5dd8 ; * lisp/emacs-lisp/checkdoc.el: Fix typo in previous commit. 2021-09-14 08:15:15 +02:00
Stefan Kangas
25ebb9374b ; More minor docfixes found by checkdoc 2021-09-14 07:57:14 +02:00