Commit graph

7689 commits

Author SHA1 Message Date
Mattias Engdegård
51a86b6a05 Count (not X) as a switch condition
* lisp/emacs-lisp/bytecomp.el (byte-compile--cond-switch-prefix):
Treat (not VAR) and (null VAR) as (eq VAR nil) when computing the
extent of switch ops.
2021-07-20 19:21:00 +02:00
Ioannis Kappas
606b783acb Allow installing packages with DOS line endings
* lisp/emacs-lisp/package.el (package-install-from-buffer): Allow
installing files with different line ending conventions (Unix, DOS
and Macos) (bug#48137).
2021-07-20 15:53:34 +02:00
Lars Ingebrigtsen
6336c18e5c Use make-separator-line in shortdoc
* lisp/simple.el (separator-line): Tweak definition to not be so
overwhelming.

* lisp/emacs-lisp/shortdoc.el (shortdoc-separator): Removed.
(shortdoc-display-group): Use make-separator-line.
2021-07-19 16:13:57 +02:00
Lars Ingebrigtsen
5ade22c2f8 Fix an unlikely `copyright-find-copyright' problem
* lisp/emacs-lisp/copyright.el (copyright-find-copyright): Make
the copyright matcher more robust (bug#7179).
2021-07-18 14:31:09 +02:00
Lars Ingebrigtsen
153c9d5ff4 Make 'n'/'p' work again in shortdoc after previous changes
* lisp/emacs-lisp/shortdoc.el (shortdoc--goto-section): Adjust to
changes in how the text properties are inserted in 22a5482ab6
(bug#49605).  Also make into a regular function.
2021-07-17 15:41:33 +02:00
akater
109c27341e EIEIO: Prevent excessive evaluation of :initform
* lisp/emacs-lisp/eieio.el (initialize-instance):
Do not evaluate initform of a slot when initarg for the slot is provided,
according to the following secitons of CLHS:
- Object Creation and Initialization
- Initialization Arguments
- Defaulting of Initialization Arguments
- Rules for Initialization Arguments

* test/lisp/emacs-lisp/eieio-etests/eieio-tests.el:
Add corresponding tests
Fix a typo
2021-07-16 15:40:08 -04:00
Mattias Engdegård
24a8cc5e70 Define revert-buffer-function for *Memory Report*
* lisp/emacs-lisp/memory-report.el (memory-report):
Allow the memory report buffer to be updated by pressing 'g'.
2021-07-16 20:05:31 +02:00
Lars Ingebrigtsen
8f5738eb8f Add more car/cdr examples to shortdoc
* lisp/emacs-lisp/shortdoc.el (list): Add more car/cdr examples.
2021-07-15 18:32:34 +02:00
Lars Ingebrigtsen
22a5482ab6 Improve the shortdoc link action in *Help* buffers
* lisp/emacs-lisp/shortdoc.el (shortdoc-display-group): Allow
taking an optional parameter to place point on a specific function.
(shortdoc--display-function): Go to the function in question in
the shortdoc buffer.
2021-07-15 18:29:27 +02:00
Lars Ingebrigtsen
fbc9a50993 Allow restoring the original order in 'tabulated-list-mode'
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-sort): Allow
restoring the original order (bug#13411).
(tabulated-list--sort-by-column-name): Store the original order.
(tabulated-list--original-order): New buffer-local variable.
2021-07-15 17:37:58 +02:00
Lars Ingebrigtsen
4aac8f60e6 Mention more split-string-* functions in shortdoc
* lisp/emacs-lisp/shortdoc.el (string): Mention
split-string-and-unquote and split-string-shell-command.
2021-07-15 10:37:11 +02:00
Lars Ingebrigtsen
da7dbfdf68 Make package-menu-filter-by-status work as documented
* lisp/emacs-lisp/package.el (package-menu-filter-by-status): Work
as documented (bug#49474).
2021-07-10 18:53:28 +02:00
pillule
57354bc64b Use display-buffer with re-builder (bug#49069)
* lisp/emacs-lisp/re-builder.el (re-builder): Uses 'display-buffer'
with 'display-buffer-in-direction' to display the reb-buffer.  This
allow user-customizations and using it on not splitables windows.
Add a dedication to its window so killing this buffer quit the window.
2021-07-08 20:39:39 +03:00
Lars Ingebrigtsen
e7cdbc1d1d Make previous empty-body warning disabling more robust
* lisp/emacs-lisp/macroexp.el (macroexp--expand-all):
`byte-compile-warning-enabled-p' may not be defined here.
2021-07-06 22:01:55 +02:00
Basil L. Contovounesios
044742bfe8 Avoid invalid regexp in wide docstring check
* lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p):
Avoid constructing an invalid regexp during byte-compilation by
limiting the number of columns to the current RE_DUP_MAX of 65535.
This protects against pathological values of fill-column, for
example (bug#49426).
2021-07-06 18:56:15 +01:00
Lars Ingebrigtsen
43fba076c9 Allow inhibiting warnings about unused variables and empty bodies
* lisp/emacs-lisp/cconv.el (cconv--warn-unused-msg): Allow
inhibiting warnings about unbound variables (bug#26486).

* lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Allow
inhibiting warnings about empty bodies.
2021-07-06 16:43:49 +02:00
Lars Ingebrigtsen
26b9564bd5 Propagate :safe properties when autoloading defcustoms
* lisp/emacs-lisp/autoload.el (make-autoload): Propagate the :safe
property to the loaddefs file (bug#28104).
2021-07-05 15:55:38 +02:00
Lars Ingebrigtsen
ed15f3954c Ignore .dir-locals-2.el files more
* lisp/emacs-lisp/shadow.el (load-path-shadows-find):
* lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Ignore
.dir-locals-2.el, too (bug#23257).
2021-07-04 16:23:46 +02:00
Michael Albinus
527bab054f Handle test environment variables
* lisp/emacs-lisp/ert.el (ert-summarize-tests-batch-and-exit):
Check also for EMACS_EMBA_CI.

* test/README (SELECTOR): Mention EMACS_TEST_VERBOSE.

* test/infra/gitlab-ci.yml (variables): Set EMACS_TEST_VERBOSE.
2021-07-01 13:43:44 +02:00
Jonas Bernoulli
3cfc553202 Add new function lm-maintainers (bug#48592)
* doc/lispref/tips.texi (Library Headers): Improve wording.
* lisp/emacs-lisp/lisp-mnt.el (lm-maintainers): New function.
(lm-maintainer): Make obsolete in favor of lm-maintainer.
(lm-verify): Use lm-maintainers.
(lm-report-bug): Use lm-maintainers.
2021-06-30 19:53:48 +02:00
Jonas Bernoulli
0e3668b233 * lisp/emacs-lisp/lisp-mnt.el (lm-crack-address): Right-trim name.
The addresses might be aligned in which case we have to trim the
extra whitespace at the end of the names.
2021-06-30 19:50:54 +02:00
João Távora
1439e9bfad Adjust docstring of lisp-mode (bug#49278)
* lisp/emacs-lisp/lisp-mode.el (lisp-mode): Mention that this mode is
primarily for Common Lisp.
2021-06-30 17:00:20 +01:00
Lars Ingebrigtsen
46a66c6248 Make the minor mode doc strings say that they're minor modes
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring):
Mention that this is a minor mode (bug#20462).
2021-06-30 15:31:26 +02:00
Colin Woodbury
4f2765f6f1 Add new function file-name-with-extension
* doc/lispref/files.texi (File Name Components): Document it.
* lisp/emacs-lisp/shortdoc.el (file-name): Ditto.

* lisp/files.el (file-name-with-extension): New function.
2021-06-30 14:07:29 +02:00
Stefan Monnier
b8f9e58ef7 * lisp/minibuffer.el (completion-in-region--single-word): Simplify
Remove redundant args `collection` and `predicate` which were always
equal to `minibuffer-completion-table` and
`minibuffer-completion-predicate` anyway.

(minibuffer-complete-word):
* lisp/emacs-lisp/crm.el (crm-complete-word): Simplify accordingly.
2021-06-26 12:29:52 -04:00
Stefan Monnier
73663d14cf * lisp/emacs-lisp/cl-macs.el: Fix test regression
(cl--alist-to-plist): New function.
(cl-struct-slot-info): Use it.
2021-06-26 12:20:25 -04:00
Mattias Engdegård
52528d6a16 Print newlines as \n instead of \12 in ERT results
This makes test errors unquestionably more readable.  The change also
makes FF print as \f; other controls still use octal escapes.

* lisp/emacs-lisp/ert.el (ert--pp-with-indentation-and-newline):
Run `pp` with `pp-escape-newlines` set to `t`.
2021-06-25 19:55:27 +02:00
Lars Ingebrigtsen
9e8d8e1a03 Make (find-face-definition 'default) work more reliably
* lisp/emacs-lisp/find-func.el (find-function--defface): New
function (bug#30230).
(find-function-regexp-alist): Use it to skip past definitions
inside comments and strings.
2021-06-25 17:16:28 +02:00
Stefan Monnier
3788d2237d * lisp/emacs-lisp/cl-preloaded.el: Fix the format of props in slot-descs
(cl--plist-remove): Remove.
(cl--plist-to-alist): New function.
(cl-struct-define): Use it to convert slots's properties to the
format expected by `cl-slot-descriptor`.

* lisp/emacs-lisp/cl-extra.el (cl--describe-class-slots): Revert last
changes, not needed any more.
2021-06-24 17:32:20 -04:00
Mattias Engdegård
1283e1db9b Don't call ERT explainer on error
* lisp/emacs-lisp/ert.el (ert--expand-should-1): If the predicate form
signals an error, don't call an explainer because the arguments passed
(the error and error argument, respectively) do not make any sense to
the explainer at all.
2021-06-24 20:48:41 +02:00
Lars Ingebrigtsen
b188861af4 Attempt to make defclass documentation more legible
* lisp/emacs-lisp/cl-extra.el (cl--print-table): Attempt to make
defclass documentation more readable (bug#30998).
(cl--describe-class-slots): Ditto.
2021-06-24 20:24:43 +02:00
Lars Ingebrigtsen
bf21aba533 Fix printing of defclass documentation slots again
* lisp/emacs-lisp/cl-extra.el (cl--describe-class-slots): Fix
printing defclass slots, and retain printing of defstruct slots
(bug#30998 and bug#46662).
2021-06-24 20:13:08 +02:00
Lars Ingebrigtsen
f85ee6d5c7 Clarify the help in the package buffers
* lisp/emacs-lisp/package.el (package--quick-help-keys): Clarify
marking help (bug#40457).
2021-06-24 16:59:42 +02:00
Lars Ingebrigtsen
3c0b50d1fc Make minor mode docstrings say what the mode "variable" is
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring): Add
the mode variable (bug#36500).
(easy-mmode--mode-docstring):
(define-minor-mode): Pass in the getter.
2021-06-22 16:03:37 +02:00
Basil L. Contovounesios
3b1d69efc3 Fix shortdoc-add-function section creation
* lisp/emacs-lisp/shortdoc.el (shortdoc-add-function): Use nconc to
actually append a new section to the list of groups while avoiding a
previous OBOE.  Push a new group to the front of shortdoc--groups
without copying it, just like define-short-documentation-group does.
(buffer): Fix copypasta in unlock-buffer example.

* test/lisp/emacs-lisp/shortdoc-tests.el (shortdoc-examples): Also
check that :no-value forms demonstrate the right function.

* doc/lispref/help.texi (Documentation Groups): Clarify that @dots
in the define-short-documentation-group arglist refer to whole
key-value pairs.  Fix typo in :eg-result-string description.
2021-06-21 16:20:22 +01:00
Andrea Corallo
a4fb5811fa * Do not attempt to write .elc files when not necessary (bug#49118)
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Do not attempt to
write .elc files when not necessary.
2021-06-21 12:20:19 +02:00
Stefan Monnier
ff053c706c * lisp/emacs-lisp/cl-generic.el: Fix bug#49053 and bug#47454
(cl-generic-define-method): Shorten the time window where the symbol is
defined to `dummy`.
2021-06-16 12:53:59 -04:00
Julian Scheid
8be9d4a156 Allow ERT tests to output the failure reasons, too
* lisp/emacs-lisp/ert.el (ert-reason-for-test-result): New function.
(ert-run-tests-batch): Output failure or skip reason  (bug#47071).
2021-06-15 17:01:57 +02:00
Lars Ingebrigtsen
1756e4757c Fix false positives in docstring width warning with (fn...) constructs.
* lisp/emacs-lisp/bytecomp.el (byte-compile--wide-docstring-p):
Don't consider the function signature when determining whether the
doc string is too wide (bug#49007).  (The signature is folded
later when displaying help.)
2021-06-15 15:33:19 +02:00
Andrea Corallo
663fb3b774 * Do not produce .elc temporary file when unnecessary (bug#48978)
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Produce .elc
temporary files only when non native compiling or when native
compiling but `byte+native-compile' is non nil.
2021-06-14 15:02:17 +02:00
Andrea Corallo
31d40cab78 ;* lisp/emacs-lisp/bytecomp.el (byte-native-compiling): Typo fix. 2021-06-14 14:18:06 +02:00
Andrea Corallo
9389742eb6 * lisp/emacs-lisp/bytecomp.el (byte+native-compile): Update docstring. 2021-06-14 14:18:06 +02:00
Stefan Monnier
4c6554413d EIEIO: Promote the CLOS behavior over the EIEIO-specific behavior
Change docs to advertize `slot-value` rather than `oref`.
Change the implementation of `:initform` to better match the CLOS semantics,
while preserving the EIEIO semantics, but warn when encountering cases
where the two diverge.
Demote the mostly unused special semantics of `oref-default`
on non-class allocated slots.

* doc/misc/eieio.texi (Quick Start): Use `slot-value`.
(Accessing Slots): Move `slot-value` before `oref`.
Fix paren-typo in example (reported by pillule <pillule@riseup.net>).
(Introspection): Remove mention of `class-slot-initarg`.

* lisp/transient.el (transient--parse-group, transient--parse-suffix):
Don't use `oref-default` to get the default value.
(transient-lisp-variable): Init forms are evaluated.

* lisp/emacs-lisp/eieio.el (defclass): Warn about inapplicable
`:initarg` and about uses of init forms that are ambiguous.
(oref): Don't advertize the deprecated use of initargs as slot names.
(oref-default): Don't advertize the deprecated case where it returns the
initform's value.
(initialize-instance): Use `macroexp-const-p`.
* lisp/emacs-lisp/eieio-core.el (eieio--unbound): Rename from
`eieio-unbound`.
(eieio--unbound-form): New var.
(eieio--slot-override): Use it.
(eieio-defclass-internal): Use it.  Change `init` so it should always
be evaluated.
(eieio--known-class-slot-names): New var.
(eieio--eval-default-p): Rename from `eieio-eval-default-p`.
(eieio--perform-slot-validation-for-default): Use `macroexp-const-p` to
decide whether to skip the test.
(eieio--add-new-slot): Register slot in `eieio--known-class-slot-names`
when applicable.
(eieio-oref-default, eieio-oset-default): Add warning for unknown slots
and slots not known to be allocated to the class.
(eieio-default-eval-maybe): Delete function.  Use just `eval` instead.
(eieio-declare-slots): Allow slots to specify their allocation class.

* lisp/cedet/srecode/insert.el (point): Declare the slot instead of
moving the class definition before the slot's first use.
(srecode-template-inserter-point, srecode-insert-fcn):
Use nil instead of unbound for the `point` slot.

* lisp/cedet/srecode/compile.el (srecode-template-inserter):
Declare the `key` slot that all children should have.

* lisp/emacs-lisp/eieio-speedbar.el (eieio-speedbar)
(eieio-speedbar-directory-button, eieio-speedbar-file-button):
* lisp/emacs-lisp/eieio-custom.el (eieio-widget-test-class):
* lisp/emacs-lisp/chart.el (chart-bar):
* lisp/cedet/semantic/ede-grammar.el (semantic-ede-proj-target-grammar):
* lisp/cedet/semantic/db.el (semanticdb-project-database):
* lisp/cedet/semantic/db-javascript.el (semanticdb-table-javascript)
(semanticdb-project-database-javascript):
* lisp/cedet/semantic/db-el.el (semanticdb-table-emacs-lisp)
(semanticdb-project-database-emacs-lisp):
* lisp/cedet/semantic/db-ebrowse.el (semanticdb-table-ebrowse)
(semanticdb-project-database-ebrowse):
* lisp/cedet/ede/proj.el (ede-proj-project):
* lisp/cedet/ede/proj-obj.el (ede-proj-target-makefile-objectcode):
* lisp/cedet/ede/generic.el (ede-generic-project):
* lisp/cedet/ede/config.el (ede-project-with-config):
* lisp/cedet/ede/base.el (ede-target, ede-project):
* lisp/auth-source.el (auth-source-backend): Init forms are evaluated,
so quote them accordingly.
2021-06-12 16:22:03 -04:00
Stefan Monnier
e775ef2f57 * lisp/emacs-lisp/benchmark.el (benchmark-elapse): Tweak 2021-06-11 14:06:29 -04:00
Mattias Engdegård
6b41d7da95 Constant-propagate (function SYMBOL)
* lisp/emacs-lisp/byte-opt.el (byte-optimize--substitutable-p):
Consider #'SYMBOL a constant for compile-time propagation purposes.
2021-06-03 21:28:10 +02:00
Mattias Engdegård
a517b77ffe Optimise (cons X nil) to (list X)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-cons): New function.
2021-06-03 21:28:10 +02:00
Basil L. Contovounesios
4784b6eb9a ; End recently added sentences with a period. 2021-06-01 20:21:51 +01:00
Andrea Corallo
a32e65b357 * Add `native-compile-target-directory' (bug#48743)
* lisp/emacs-lisp/comp.el (native-compile-target-directory): New
variable.
(comp-spill-lap-function): Make use of.
2021-06-01 18:12:20 +02:00
Andrea Corallo
c4b02dad9b Rename batch-byte-native-compile-for-bootstrap (bug#48743)
* lisp/Makefile.in : Rename `batch-byte-native-compile-for-bootstrap'
-> `batch-byte+native-compile.
* lisp/emacs-lisp/bytecomp.el (byte+native-compile)
(byte-compile-file): Rename
`batch-byte-native-compile-for-bootstrap' ->
`batch-byte+native-compile + `byte-native-for-bootstrap' ->
`byte+native-compile'.
* lisp/emacs-lisp/comp.el (comp-spill-lap-function, comp-final)
(batch-native-compile, batch-byte+native-compile): Likewise.
* lisp/emacs-lisp/bytecomp.el (byte+native-compile)
(byte-compile-file): Likewise.
* test/src/comp-tests.el (comp-tests-bootstrap): Rename
`byte-native-for-bootstrap' -> `byte+native-compile'.
2021-06-01 18:11:37 +02:00
Andrea Corallo
8992a45202 * Make *Async-native-compile-log* buffer read-only (bug#48763)
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Make
"*Async-native-compile-log*" read-only.
2021-05-31 20:52:45 +02:00