summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* Fix = propagation semantic for constrained inputsAndrea Corallo2021-03-021-11/+30
| | | | | | | | * lisp/emacs-lisp/comp-cstr.el (comp-cstr): Synthesize `comp-cstr-shallow-copy'. (comp-cstr-=): Relax inputs before intersecting them. * test/src/comp-tests.el (comp-tests-type-spec-tests): Add three tests.
* Fix `eql' `equal' propagation of non hash consed values (bug#46843)Andrea Corallo2021-03-012-5/+32
| | | | | | | | | | | | | | | | | | | | | | Extend assumes allowing the following form: (assume dst (and-nhc src1 src2)) `and-nhc' assume operator allow for constraining correctly intersections where non hash consed values are not propagated as values but rather promoted to their types. * lisp/emacs-lisp/comp-cstr.el (comp-cstr-intersection-no-hashcons): New function. * lisp/emacs-lisp/comp.el (comp-emit-assume): Logic update to emit `and-nhc' operator (implemented in fwprop by `comp-cstr-intersection-no-hashcons'). (comp-add-cond-cstrs): Map `eq' to `and' assume operator and `equal' `eql' into `and-nhc'. (comp-fwprop-insn): Update to handle `and-nhc'. * test/src/comp-tests.el (comp-tests-type-spec-tests): Add two tests covering `eql' and `equal' propagation of non hash consed values.
* Don't treat '=' as simple equality emitting constraints (bug#46812)Andrea Corallo2021-02-282-15/+34
| | | | | | | | | | | | | | | | | | | Extend assumes allowing the following form (assume dst (= src1 src2)) to caputure '=' semanting during fwprop handling float integer conversions. * lisp/emacs-lisp/comp.el (comp-equality-fun-p): Don't treat '=' as simple equality. (comp-arithm-cmp-fun-p, comp-negate-arithm-cmp-fun) (comp-reverse-arithm-fun): Rename and add '=' '!='. (comp-emit-assume, comp-add-cond-cstrs, comp-fwprop-insn): Update for new function nameing and to handle '='. * lisp/emacs-lisp/comp-cstr.el (comp-cstr-=): New function. * test/src/comp-tests.el (comp-tests-type-spec-tests): Add a bunch of '=' specific tests.
* Migrate and rename a bunch of functions from comp.el to comp-cstr.elAndrea Corallo2021-02-282-83/+87
| | | | | | | | | | | | | | * lisp/emacs-lisp/comp-cstr.el (comp-cstr-imm-vld-p) (comp-cstr-imm, comp-cstr-fixnum-p, comp-cstr-symbol-p) (comp-cstr-cons-p): Move and rename from 'comp.el'. * lisp/emacs-lisp/comp.el (comp-mvar-type-hint-match-p) (make-comp-mvar, comp-emit-assume, comp-fwprop-prologue) (comp-function-foldable-p, comp-function-call-maybe-fold) (comp-fwprop-call, comp-fwprop-insn, comp-call-optim-func) (comp-compute-function-type): Update for renamed functions. * src/comp.c (emit_mvar_rval): Likewise. * test/src/comp-tests.el (comp-tests-mentioned-p-1) (comp-tests-cond-rw-checker-val): Likewise.
* Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-02-2617-89/+103
|\
| * Fix syntax highlighting of easy-menu-define docstringsStefan Kangas2021-02-261-1/+1
| | | | | | | | | | * lisp/emacs-lisp/easymenu.el (easy-menu-define): Add doc-string declaration for correct syntax highlighting.
| * Remove redundant requires of easymenuStefan Kangas2021-02-262-5/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/allout.el: * lisp/emacs-lisp/edebug.el: * lisp/emacs-lisp/ert.el: * lisp/erc/erc-menu.el: * lisp/help-mode.el: * lisp/net/dictionary.el: * lisp/nxml/rng-nxml.el: * lisp/progmodes/ebrowse.el: * lisp/progmodes/meta-mode.el: * lisp/progmodes/prolog.el: * lisp/progmodes/ps-mode.el: * lisp/progmodes/vera-mode.el: * lisp/wid-browse.el: Remove redundant require of easymenu. We only use the autoloaded macro 'easy-menu-define' here.
| * Function-quote completion property of declare formBasil L. Contovounesios2021-02-262-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For discussion, see the following thread: https://lists.gnu.org/r/emacs-devel/2021-02/msg01666.html * lisp/emacs-lisp/byte-run.el (byte-run--set-completion): Quote with 'function' for syntactical consistency with other declare form properties. This allows writing (declare (completion foo)) instead of (declare (completion 'foo)). * lisp/emacs-lisp/easymenu.el (easy-menu-do-define): * lisp/gnus/gnus-sum.el (gnus-summary-make-menu-bar): Prefer function-put over put for function symbols. * lisp/subr.el (ignore, undefined): Remove #'-quoting from declare form; it is no longer needed.
| * Fix pcase rx pattern bugsMattias Engdegård2021-02-261-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Two unrelated bugs: A missing type check caused an error in rx patterns for non-string match targets, and rx patterns did not work at all in pcase-let or pcase-let*. Second bug reported by Basil Contovounesios and Ag Ibragimov; fixes proposed by Stefan Monnier. Discussion and explanation in thread at https://lists.gnu.org/archive/html/emacs-devel/2021-02/msg01924.html * lisp/emacs-lisp/rx.el (rx): Add (pred stringp) to avoid type errors, and replace the `pred` clause for the actual match with something that works with pcase-let(*) without being optimised away. * test/lisp/emacs-lisp/rx-tests.el (rx-pcase): Add test cases.
| * New variable 'use-short-answers' to use 'y-or-n-p' instead of 'yes-or-no-p'Juri Linkov2021-02-251-2/+4
| | | | | | | | | | | | | | | | | | | | * lisp/cus-start.el: Add use-short-answers. * lisp/emacs-lisp/map-ynp.el (read-answer): Handle use-short-answers. (read-answer-short): Add use-short-answers to docstring. * src/fns.c (Fyes_or_no_p): Call y-or-n-p if use_short_answers is true. (syms_of_fns): Add DEFVAR_BOOL use-short-answers (bug#46594).
| * Remove last remaining external uses of `edebug-form-spec`Stefan Monnier2021-02-241-1/+1
| | | | | | | | | | | | | | * lisp/emacs-lisp/gv.el (gv-place): Use `def-edebug-elem-spec`. * lisp/obsolete/erc-compat.el (erc-define-minor-mode): Remove redundant `edebug-form-spec`.
| * * lisp/emacs-lisp/macroexp.el (macroexp-file-name): Work in `eval-buffer`Stefan Monnier2021-02-242-2/+6
| | | | | | | | | | | | | | Rely on `current-load-list` instead of `load-file-name`. * lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables): Change the var we override accordingly.
| * * lisp/emacs-lisp/macroexp.el (macroexp-file-name): New function.Stefan Monnier2021-02-247-34/+39
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Yes, finally: a function that tells you the name of the file where the code is located. Finding this name is non-trivial in practice, as evidenced by the "4 shift/reduce conflicts" warning when compiling CEDET's python.el, because its `wisent-source` got it wrong in that case, thinking the grammar came from `python.el` instead of `python-wy.el`. While at it, also made `macroexp-compiling-p` public, since it's useful at various places. (macroexp-compiling-p): Rename from `macroexp--compiling-p`. * lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables): Bind `load-file-name` to nil so we can distinguish a load that calls the byte compiler from a byte compilation which causes a load. * lisp/cedet/semantic/wisent/python.el (wisent-python--expected-conflicts): Remove; it was just a workaround. * lisp/subr.el (do-after-load-evaluation): Avoid `byte-compile--` vars. * lisp/cedet/semantic/fw.el (semantic-alias-obsolete): Use `macroexp-compiling-p` and `macroexp-file-name`. * lisp/cedet/semantic/wisent/comp.el (wisent-source): Use `macroexp-file-name` (wisent-total-conflicts): Tighten regexp. * lisp/emacs-lisp/cl-lib.el (cl--compiling-file): Delete function and variable. Use `macroexp-compiling-p` instead. * lisp/progmodes/flymake.el (flymake-log): * lisp/emacs-lisp/package.el (package-get-version): * lisp/emacs-lisp/ert-x.el (ert-resource-directory): Use `macroexp-file-name`.
| * Use named faces in shortdocProtesilaos Stavrou2021-02-241-2/+7
| | | | | | | | | | | | | | * shortdoc.el (shortdoc-heading): Define new face for headings. (shortdoc-display-group): Apply new heading face. (shortdoc--display-function): Use existing face for section text. * etc/NEWS: Document new face (bug#46748).
| * Small fixesJuri Linkov2021-02-231-1/+1
| | | | | | | | | | | | * lisp/emacs-lisp/seq.el (seq-contains): Move the ‘declare’ form after the docstring. * lisp/misc.el (copy-from-above-command): Fix whitespace regexp.
| * Improve easymenu.el Commentary sectionStefan Kangas2021-02-231-0/+3
| | | | | | | | * lisp/emacs-lisp/easymenu.el: Improve Commentary section.
| * Prefer `declare` over a `put` of `list-indent-function`.Stefan Monnier2021-02-222-23/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While at it, I enabled lexical-binding in the affected files. * lisp/cedet/semantic/sb.el: Enable lexical-binding. (semantic-sb-with-tag-buffer): Use `declare`. * lisp/cedet/semantic/bovine/el.el: Enable lexical-binding. (semantic-elisp-setup-form-parser): Use `declare`. * lisp/emacs-lisp/ert.el: * lisp/emacs-lisp/ert-x.el: Remove redundant `put`. * lisp/emulation/cua-rect.el: Enable lexical-binding. (cua--rectangle-operation, cua--rectangle-aux-replace): Use `declare`. * lisp/mh-e/mh-acros.el: Enable lexical-binding. (mh-do-in-gnu-emacs, mh-do-in-xemacs, mh-funcall-if-exists, defun-mh) (defmacro-mh, with-mh-folder-updating, mh-in-show-buffer) (mh-do-at-event-location, mh-iterate-on-messages-in-region) (mh-iterate-on-range): Use `declare`. * lisp/mh-e/mh-compat.el: Enable lexical-binding. (mh-flet): Use `declare`. * lisp/mh-e/mh-e.el: Enable lexical-binding. (defgroup-mh, defcustom-mh, defface-mh): Use `declare`. * lisp/net/sieve.el: Enable lexical-binding. Remove redundant :group args. (sieve-activate, sieve-remove, sieve-edit-script): Remove unused arg from the interactive spec. (sieve-deactivate-all): Remove unused var `name`. (sieve-change-region): Use `declare`. * lisp/obsolete/fast-lock.el: Enable lexical-binding. Remove redundant :group args. Remove XEmacs compat code. (save-buffer-state): Remove macro. (fast-lock-add-properties): Use `with-silent-modifications` instead. * lisp/obsolete/lazy-lock.el: Enable lexical-binding. Remove redundant :group args. (do-while): Use `declare`. (save-buffer-state): Remove macro. (lazy-lock-fontify-rest-after-change, lazy-lock-defer-line-after-change) (lazy-lock-defer-rest-after-change, lazy-lock-after-fontify-buffer) (lazy-lock-after-unfontify-buffer, lazy-lock-fontify-region): Use `with-silent-modifications` instead. * lisp/obsolete/pgg.el: Enable lexical-binding. Remove XEmacs compat code. (pgg-save-coding-system, pgg-as-lbt, pgg-process-when-success): Use `declare`. (pgg-add-passphrase-to-cache): Remove unused var `new-timer`. (pgg-decrypt-region): Remove unused var `buf`. * lisp/org/org-agenda.el (org-let, org-let2): Move from org-macs and use `declare`. * lisp/org/org-macs.el (org-let, org-let2): Move these functions that are inherently harmful to your karma to the only package that uses them. (org-scroll): Use `pcase` to avoid `eval` and use more readable syntax for those integers standing for events. * lisp/progmodes/antlr-mode.el: Enable lexical-binding. (save-buffer-state-x): Use `declare` and `with-silent-modifications`. * lisp/international/mule-util.el (with-coding-priority): * lisp/cedet/ede/proj-comp.el (proj-comp-insert-variable-once): * lisp/org/org-element.el (org-element-map): * test/lisp/emacs-lisp/bytecomp-tests.el (test-byte-comp-compile-and-load): * test/lisp/emacs-lisp/generator-tests.el (cps-testcase): Use `declare`.
| * cl-extra: Fix docstring retrievalJulian Scheid2021-02-221-2/+2
| | | | | | | | | | * lisp/emacs-lisp/cl-extra.el (cl--describe-class-slots): Fix docstring retrieval (bug#46662).
| * Fix compilation of closures with nontrivial doc stringsMattias Engdegård2021-02-221-14/+31
| | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-make-closure): Use the supplied doc string if it's a literal; fall back to the old slow way of building a closure otherwise.
* | Make some defcustom types stricter in comp.elStefan Kangas2021-02-261-6/+9
| | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-speed, comp-debug, comp-verbose) (comp-async-jobs-number, comp-async-env-modifier-form): Use stricter types.
* | Add :version tags to defcustoms in comp.elStefan Kangas2021-02-261-15/+28
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-speed, comp-debug, comp-verbose) (comp-never-optimize-functions, comp-async-jobs-number) (comp-async-cu-done-hook, comp-async-all-done-hook) (comp-async-env-modifier-form) (comp-async-report-warnings-errors, comp-native-driver-options) (comp-libgccjit-reproducer): Add :version tags.
* | Fix last changeEli Zaretskii2021-02-261-10/+12
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-async-report-warnings-errors): Improve wording of the doc string.
* | * Improve `comp-async-report-warnings-errors' docstringAndrea Corallo2021-02-261-1/+12
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-async-report-warnings-errors): Improve docstring.
* | Improve documentation of last changeEli Zaretskii2021-02-261-2/+6
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-async-query-on-exit) (comp-async-report-warnings-errors): Improve wording.
* | * Add `comp-async-query-on-exit' customize.Andrea Corallo2021-02-261-1/+6
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-async-query-on-exit): New customize. (comp-run-async-workers): Make use of.
* | * Fix some comp-vec logicAndrea Corallo2021-02-251-4/+4
| | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-vec-length, comp-vec-append) (comp-vec-prepend): Fix logic. (comp-vec-aref): Fix indentation.
* | * Fix two docstrings in comp.elAndrea Corallo2021-02-251-2/+2
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-new-frame, comp-maybe-add-vmvar): Fix docstring.
* | Fix async compilation and paramenter namingAndrea Corallo2021-02-241-6/+6
| | | | | | | | | | * lisp/emacs-lisp/comp.el (native--compile-async) (native-compile-async): Fix broken parameter renaming.
* | Do not emit assumptions referencing clobbered mvars (bug#46670)Andrea Corallo2021-02-231-37/+65
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-func): Add `vframe-size' slot. (comp-new-frame): Add `vsize' parameter. (comp-limplify-top-level, comp-limplify-function): Update for new `comp-new-frame'. (comp-maybe-add-vmvar): New function. (comp-add-cond-cstrs): Logic update to emit assumptions not referencing clobbered variables. (comp-place-phis, comp-ssa, comp-ssa-rename-insn) (comp-ssa-rename): Update rename logic to rename also negative slots. (comp-fwprop-insn): Update to handle `(assume mvar mvar)' form. * test/src/comp-tests.el (46670-1): Add testcase. * test/src/comp-test-funcs.el (comp-test-46670-1-f) (comp-test-46670-2-f): New functions.
* | * Move ssa rename from vector to comp-vecAndrea Corallo2021-02-231-14/+14
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-block): Updated `final-frame' slot type. (comp-limplify): Updated `frame' slot type. (comp-slot-n, comp-new-frame, comp-place-phis, comp-ssa) (comp-ssa-rename-insn, comp-ssa-rename, comp-finalize-phis): Use `comp-vec'.
* | * Add a simple growable vector like typeAndrea Corallo2021-02-231-3/+50
| | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-vec): Define struct. (comp-vec-copy, comp-vec-length, comp-vec--verify-idx) (comp-vec-aref, comp-vec-append, comp-vec-prepend): New functions.
* | * Some clean-up in comp.elAndrea Corallo2021-02-221-9/+0
| | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-func): Remove 'array-h'. (comp-spill-lap-function, comp-intern-func-in-ctxt) (comp-spill-lap-function, comp-addr-to-bb-name): Update accordingly.
* | * Don't use paths to indicate filenamesAndrea Corallo2021-02-221-10/+10
| | | | | | | | | | * lisp/emacs-lisp/comp.el (native--compile-async) (native-compile-async): Replace `paths' argname with `files'.
* | * Fix union constraint for mixed pos/neg constraintsAndrea Corallo2021-02-221-0/+6
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp-cstr.el (comp-cstr-union-1-no-mem): Fix neg type shadowing pos values. * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-typespec-tests-alist): Add testcase. * test/src/comp-tests.el (comp-tests-type-spec-tests): Fix testcase.
* | * lisp/emacs-lisp/comp.el (comp-spill-lap): Fix doc string.Andrea Corallo2021-02-211-1/+1
| |
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2021-02-2111-163/+110
|\|
| * Faster, more compact, and readable closure creationMattias Engdegård2021-02-211-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify closure creation by calling a single function at run time instead of putting it together from small pieces. This is faster (by about a factor 2), takes less space on disk and in memory, and makes internal functions somewhat readable in disassembly listings again. This is done by creating a prototype function at compile-time whose closure variables are placeholder values V0, V1... which can be seen in the disassembly. The prototype is then cloned at run time using the new make-closure function that replaces the placeholders with the actual closure variables. * lisp/emacs-lisp/bytecomp.el (byte-compile-make-closure): Generate call to make-closure from a prototype function. * src/alloc.c (Fmake_closure): New function. (syms_of_alloc): Defsubr it. * src/data.c (syms_of_data): Defsym byte-code-function-p.
| * ; Fix previous easy-menu-define conversionStefan Kangas2021-02-211-3/+3
| | | | | | | | | | | | * lisp/emacs-lisp/re-builder.el (reb-mode-menu): * lisp/progmodes/make-mode.el (makefile-mode-menu): Replace :button attribute with :style and :selected.
| * Change how (declare (modes store the dataLars Ingebrigtsen2021-02-201-3/+1
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/byte-run.el (byte-run--set-modes): Change from being a predicate to storing the modes. This allows using the modes for positive command discovery, too. * src/data.c (Fcommand_modes): Look at the `command-modes' symbol property, too.
| * Add the `always' functionLars Ingebrigtsen2021-02-201-1/+1
| | | | | | | | | | | | | | | | * doc/lispref/functions.texi (Calling Functions): Document it. * lisp/subr.el (always): New function. * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Mark it as side effect free.
| * Convert re-builder menu to easy-menu-defineStefan Kangas2021-02-201-49/+29
| | | | | | | | | | | | * lisp/emacs-lisp/re-builder.el (reb-mode-map): Move menu definition from here... (reb-mode-menu): ...to here, and rewrite using easy-menu-define.
| * * lisp/emacs-lisp/bytecomp.el: Don't warn for repeated _ argsStefan Monnier2021-02-191-1/+3
| | | | | | | | | | (byte-compile-check-lambda-list): Skip warnings of repeated arg for those that are declared as unused anyway.
| * Do interactive mode tagging for package.elStefan Kangas2021-02-191-22/+31
| |
| * * lisp/emacs-lisp/bindat.el: Tweak example in commentStefan Monnier2021-02-181-9/+9
| | | | | | | | Suggested by Kim Storm <storm@cua.dk>.
| * Fix typosMattias Engdegård2021-02-183-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/display.texi (Size of Displayed Text): * doc/lispref/windows.texi (Buffer Display Action Functions): * etc/NEWS: * etc/ORG-NEWS (Org-Attach has been refactored and extended): * lisp/battery.el (display-battery-mode, battery--upower-subsribe): * lisp/calendar/parse-time.el: * lisp/dired-x.el: * lisp/emacs-lisp/chart.el (chart-sequece, chart-bar-quickie): * lisp/emacs-lisp/eldoc.el (eldoc-echo-area-use-multiline-p) (eldoc-documentation-strategy): * lisp/emacs-lisp/pcase.el (pcase--split-pred, pcase--u1): * lisp/gnus/gnus-search.el (gnus-search-expandable-keys) (gnus-search-parse-query, gnus-search-query-return-string) (gnus-search-imap, gnus-search-imap-search-command) (gnus-search-transform-expression): * lisp/gnus/nnselect.el: * lisp/isearch.el (isearch-lazy-count-format): * lisp/mh-e/mh-show.el (mh-show-msg): * lisp/net/dictionary-connection.el (dictionary-connection-open): * lisp/net/dictionary.el (dictionary-default-popup-strategy) (dictionary, dictionary-split-string, dictionary-do-select-dictionary) (dictionary-display-dictionarys, dictionary-search) (dictionary-tooltip-mode): * lisp/net/eudcb-macos-contacts.el (eudc-macos-contacts-set-server): * lisp/net/mailcap.el (mailcap-mime-data): * lisp/net/tramp-smb.el (tramp-smb-maybe-open-connection): * lisp/nxml/nxml-mode.el (nxml-mode): * lisp/progmodes/cc-engine.el: * lisp/progmodes/cperl-mode.el (cperl-mode) (cperl-fontify-syntaxically): * lisp/progmodes/flymake.el (flymake-diagnostic-functions): * lisp/progmodes/verilog-mode.el (verilog--supressed-warnings) (verilog-preprocess): * lisp/simple.el (self-insert-uses-region-functions): * lisp/textmodes/bibtex.el (bibtex-copy-summary-as-kill): * lisp/textmodes/texnfo-upd.el (texinfo-insert-master-menu-list): * src/dispnew.c: * src/font.c (Ffont_get): * src/indent.c (compute_motion): * src/process.c (init_process_emacs): * src/w32fns.c (deliver_wm_chars): * test/lisp/jsonrpc-tests.el (deferred-action-complex-tests): Fix typos in documentation, comments, and internal identifiers.
| * * lisp/emacs-lisp/edebug.el (eval-defun): SimplifyStefan Monnier2021-02-181-61/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (edebug-all-defs, edebug-all-forms): Don't autoload since the problem it was working around has been fixed a while back. (edebug--eval-defun): Rename from `edebug-eval-defun` and simplify by making it an `:around` advice. (edebug-install-read-eval-functions) (edebug-uninstall-read-eval-functions): Adjust accordingly. (edebug-eval-defun): Redefine as an obsolete wrapper. * lisp/progmodes/elisp-mode.el (elisp--eval-defun): Use `load-read-function` so it obeys `edebug-all-(defs|forms)`. (elisp--eval-defun): Fix recent regression introduced with `elisp--eval-defun-result`.
| * Fix rx `regexp` form with deprecated syntaxMattias Engdegård2021-02-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | The argument of the rx `regexp` form is assumed to evaluate to a valid regexp, but certain kinds of deprecated but still accepted usage were not handled correctly, such as unescaped literal (special) characters: (rx "a" (regexp "*")) => "a*" which is wrong. Handle these cases; there is no extra trouble. * lisp/emacs-lisp/rx.el (rx--translate-regexp): Force bracketing of single special characters. * test/lisp/emacs-lisp/rx-tests.el (rx-regexp): Add test case.
* | Merge remote-tracking branch 'savannah/master' into native-compAndrea Corallo2021-02-1720-767/+877
|\|
| * Adjust the edebug spec for `interactive'Lars Ingebrigtsen2021-02-171-2/+4
| | | | | | | | | | * lisp/emacs-lisp/edebug.el: Adjust the edebug spec for `interactive' for the new syntax.
| * Fix recently introduced bug in `byte-compile-lambda'Lars Ingebrigtsen2021-02-171-11/+11
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Fix recently introduced error when compiling non-lexical commands (bug#46589).