summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* * Pacify with the byte-compilerAndrea Corallo2020-05-181-14/+14
| | | | | | | | * lisp/emacs-lisp/comp.el (comp-num-cpus): New special variable. (comp-effective-async-max-jobs): Make use of `comp-num-cpus'. (comp-call-optim-form-call): Remove unnecessary parameter. (comp-call-optim-func): Reflect `comp-call-optim-form-call' parameter removal.
* * Add new customize `comp-async-env-modifier-form' (Bug#40838)Andrea Corallo2020-05-181-0/+7
| | | | | | * lisp/emacs-lisp/comp.el (comp-async-env-modifier-form): New customize. (comp-run-async-workers): Make use of `comp-async-env-modifier-form'.
* * Make the Evil happy (Bug#41374)Andrea Corallo2020-05-181-5/+7
| | | | | | | | * lisp/emacs-lisp/comp.el (comp-never-optimize-functions): Blacklist all primitives advised by evil-mode from trampoline optimization. (comp-call-optim-form-call): Prevent trampoline optimization for recursive calls at speed 2 to respect elisp original semantic.
* Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-05-171-1/+1
|\
| * Don’t attempt to modify constant consesPaul Eggert2020-05-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | From a patch privately suggested by Mattias Engdegård on 2020-05-11 in a followup to Bug#40671. * admin/charsets/cp51932.awk: * admin/charsets/eucjp-ms.awk: Generate code that does not modify constant conses. * doc/misc/emacs-mime.texi (Encoding Customization): * lisp/emacs-lisp/byte-opt.el (byte-compile-side-effect-free-ops): * lisp/frameset.el (frameset-persistent-filter-alist): * lisp/gnus/gnus-sum.el (gnus-article-mode-line-format-alist): Use append instead of nconc. * lisp/language/japanese.el (japanese-ucs-cp932-to-jis-map) (jisx0213-to-unicode): Use mapcar instead of mapc. * lisp/language/lao-util.el (lao-transcription-consonant-alist) (lao-transcription-vowel-alist): * lisp/language/tibetan.el (tibetan-subjoined-transcription-alist): Use copy-sequence. * test/src/fns-tests.el (fns-tests-nreverse): (fns-tests-sort, fns-tests-collate-sort) (fns-tests-string-version-lessp, fns-tests-mapcan): Use copy-sequence, vector, and list.
* | * Do not refuse to compile if a dynamic lambda is encounteredAndrea Corallo2020-05-151-22/+30
| | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-lex-byte-func-p): New subst. (comp-intern-func-in-ctxt): Do not crash if we still encounter a non lexical scoped lambda.
* | * Allow for logging async compilation command lineAndrea Corallo2020-05-151-0/+3
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-run-async-workers): When non zero verbose log async compilation command line invocation.
* | Sanity check on lambdas fixupsAndrea Corallo2020-05-151-1/+1
| | | | | | | | | | | | | | | | | | | | * src/pdumper.c (dump_do_dump_relocation): While fixing up lambda relocation verify placeholder coherency. * src/comp.c (syms_of_comp): Define symbol 'lambda-fixup'. * lisp/emacs-lisp/comp.el (comp-finalize-container): Leave a lambda-fixup as placeholder in the relocation as a sanity check.
* | * Fix speed 2 bootstrapAndrea Corallo2020-05-151-0/+1
| | | | | | | | | | (comp-call-optim-func): Do nothing if the function name is unknown.
* | Add anonymous lambdas reload mechanismAndrea Corallo2020-05-151-2/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/pdumper.c (dump_do_dump_relocation): Initialize 'lambda_gc_guard' while resurrecting. (dump_do_dump_relocation): Revive lambdas and fixup them. * src/comp.h (struct Lisp_Native_Comp_Unit): Define new 'lambda_gc_guard' 'lambda_c_name_idx_h' 'data_imp_relocs' 'loaded_once' fields. * src/comp.c (load_comp_unit): Use compilaiton unit 'loaded_once' field. (make_subr, Fcomp__register_lambda): New functions. (Fcomp__register_subr): Make use of 'make_subr'. (Fnative_elisp_load): Indent. (Fnative_elisp_load): Initialize 'lambda_gc_guard' 'lambda_c_name_idx_h' fields. (syms_of_comp): Add Scomp__register_lambda. * lisp/emacs-lisp/comp.el (comp-ctxt): Change 'byte-func-to-func-h' hash key test. (comp-ctxt): Add 'lambda-fixups-h' slot. (comp-emit-lambda-for-top-level): New function. (comp-finalize-relocs): Never emit lambdas in pure space. (comp-finalize-relocs): Fixup relocation indexes.
* | * Prune now unnecessary byte-code objectsAndrea Corallo2020-05-141-2/+10
| | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-finalize-container): Prune byte-code that was lambdas. (comp-compile-ctxt-to-file): Remove fixme.
* | * Rework comp-spill-lap-functionAndrea Corallo2020-05-141-35/+36
| | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-spill-lap-function): Move code from to comp-intern-func-in-ctxt. (comp-intern-func-in-ctxt): New function, this guard in case byte-to-native-lambda-byte-func is nil.
* | Update spill LAP machinery and compile anonymous lambdasAndrea Corallo2020-05-142-56/+97
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-spill-lap-function): Make use of byte-to-native-lambdas-h and update for 'byte-to-native-func-def'. (comp-spill-lap-function): Rework logic to retrive LAP using 'byte-to-native-lambdas-h'. (comp-emit-for-top-level): Update for 'byte-to-native-function'. * lisp/emacs-lisp/bytecomp.el: Add commentary on new spill LAP mechanism. (byte-to-native-lambda, byte-to-native-func-def): New structures. (byte-to-native-top-level): Indent. (byte-to-native-lambdas-h): Update doc. (byte-compile-lapcode): Add a 'byte-to-native-lambda' instance into byte-to-native-lambdas-h instead of just LAP. (byte-compile-file-form-defmumble): Store into 'byte-to-native-func-def' only the byte compiled function, the LAP will be retrived through 'byte-to-native-lambdas-h'. (byte-compile-lambda): Return the byte compiled function.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-05-147-126/+200
|\|
| * Turn Eldoc, Xref and Project into GNU ELPA :core packagesJoão Távora2020-05-131-0/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new packages state they require Emacs 26.3 to function, but a small part of project.el breaks this "soft" rule: the two functions requiring fileloop.el are incompatible with Emacs 26.3. * lisp/jsonrpc.el: Tweak comment near Package-Requires. * lisp/emacs-lisp/eldoc.el: Add Version and Package-Requires. * lisp/progmodes/flymake.el: Add comment near Package-Requires. * lisp/progmodes/project.el: Add Version and Package-Requires. * lisp/progmodes/xref.el: Add Version and Package-Requires.
| * * lisp/emacs-lisp/syntax.el: Fix bug#41195Stefan Monnier2020-05-121-6/+18
| | | | | | | | | | | | | | | | Allow use of `syntax-ppss-flush-cache` in `syntax-propertize-function`. (syntax-propertize--inhibit-flush): New var. (syntax-propertize): Bind it. (syntax-ppss-flush-cache): Test it.
| * Revert "Inhibit modification hooks when saving eieio-persistent's"Michael Heerdegen2020-05-121-2/+1
| | | | | | | | This reverts commit c59e878439833d89998e03134ee9060f9c449fd9.
| * Support sorting timer-list-mode by column (Bug#40854)Stefan Kangas2020-05-121-4/+31
| | | | | | | | | | | | | | * lisp/emacs-lisp/timer-list.el (timer-list-mode) (timer-list--idle-predicate, timer-list--next-predicate) (timer-list--repeat-predicate) (timer-list--function-predicate): Add support for sorting by column.
| * Base timer-list-mode on tabulated-list-mode (Bug#40854)Stefan Kangas2020-05-121-56/+49
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/timer-list.el (list-timers) (timer-list-mode): Inherit from 'tabulated-list-mode' instead of 'special-mode' and make the necessary changes to support that. * doc/lispref/os.texi (Timers): Update documentation.
| * Fix bug #40992 whilst still allowing breakpoint highlights in edebugAlan Mackenzie2020-05-111-15/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Strategy: when an instrumented function gets re-evaluated, save the former value of its symbol's `edebug' property in the new propery `ghost-edebug'. If this function is still being edebugged, edebug will then access its info from this new property. Also fix the bug whereby compile-defun'ing an instrumented function prevents the function being re-instrumented by I (edebug-instrument-callee). * lisp/emacs-lisp/edebug.el (edebug-get-edebug-or-ghost): New function. (edebug-read-and-maybe-wrap-form1): save value of `edebug' property in 'ghost-edebug'. (edebug-make-form-wrapper): Set value of `ghost-edebug' to nil. (edebug-make-form-wrapper, edebug-find-stop-point, edebug-next-break-point) (edebug-modify-breakpoint, edebug--overlay-breakpoints, edebug-set-breakpoint) (edebug-unset-breakpoints, edebug-toggle-disable-breakpoint) (edebug--backtrace-goto-source, edebug-display-freq-count) (edebug-set-conditional-breakpoint): Use edebug-get-edebug-or-ghost to access edebug information. (edebug-instrument-function): Also check a function is a cons before declaring it "already instrumented".
| * * lisp/emacs-lisp/pcase.el (pcase--fgrep): Look inside vectorsStefan Monnier2020-05-111-4/+9
| |
| * * lisp/emacs-lisp/syntax.el (syntax-propertize): Use run-hook-wrappedStefan Monnier2020-05-111-17/+21
| | | | | | | | | | This way we avoid making assumptions about the content of syntax-propertize-extend-region-functions
| * * lisp/emacs-lisp/pcase.el: Don't bind unused vars in branchesStefan Monnier2020-05-101-20/+27
| | | | | | | | | | | | | | (pcase--fgrep): Change calling convention to take bindings rather than just variables. (pcase--funcall, pcase--eval): Adjust to this new calling convention. (pcase--expand): Use `pcase--fgrep` to bind only the vars that are used.
| * * lisp/emacs-lisp/eieio.el (eieio pcase macro): Fix last-minute typoStefan Monnier2020-05-101-1/+1
| |
| * * lisp/emacs-lisp/eieio.el (eieio pcase macro): Remove unused var `is`Stefan Monnier2020-05-101-10/+9
| |
* | * Fix `comp-deferred-compilation-black-list' effectivenessAndrea Corallo2020-05-101-6/+7
| | | | | | | | | | * lisp/emacs-lisp/comp.el (native-compile-async): Fix logic for 'comp-deferred-compilation-black-list' effectiveness.
* | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-05-092-5/+37
|\|
| * Merge from origin/emacs-27Glenn Morris2020-05-091-5/+6
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | be0d1cac83 (origin/emacs-27) Small fix for type of 'display-fill-colu... c5e5839776 Fix customization of 'display-fill-column-indicator-charac... d5c184aa3e Refer to fill column indicator Info node in some places. e13300ae50 Merge branch 'emacs-27' of git.sv.gnu.org:/srv/git/emacs i... 0bae57033f Fix GTK's Tool Bar menu radio buttons 4c98aa7ea5 Minor clarifications in NEWS a1cbd05f38 Improve documentation of 'with-suppressed-warnings'. 4a895c1b26 Fix a typo in a comment 2caf3e997e Improve documentation of Hi Lock mode 7081c1d66f Fix typos in the Emacs user manual 0385771e2f Fix references to Speedbar in VHDL mode a76cafea0d Fix handling of FROM = t and TO = t by 'window-text-pixel-... # Conflicts: # etc/NEWS # src/xdisp.c
| | * Improve documentation of 'with-suppressed-warnings'.Philipp Stephani2020-05-081-5/+6
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/byte-run.el (with-suppressed-warnings): Refer to 'byte-compile-warnings' instead of 'byte-compile-warning-types', as only the former variable documents the available warning types.
| | * Revert "cl-loop: Calculate the array length just once"Noam Postavsky2020-05-051-9/+3
| | | | | | | | | | | | Don't merge to master. This is a safe-for-release fix for Bug#40727.
| | * Revert "cl-loop: Add missing guard condition"Noam Postavsky2020-05-051-25/+7
| | | | | | | | | | | | Don't merge to master. This is a safe-for-release fix for Bug#40727.
| | * Revert "Refix conditional step clauses in cl-loop"Noam Postavsky2020-05-051-37/+59
| | | | | | | | | | | | Don't merge to master. This is a safe-for-release fix for Bug#40727.
| | * Remove calls to non-existent functions from edebug.el.Alan Mackenzie2020-05-041-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Do not merge to master. *lisp/emacs-lisp/edebug.el (edebug--display-1) (edebug-toggle-disable-breakpoint): Remove calls to edebug--overlay-breakpoints and edebug--overlay-breakpoints-removed which had been overlooked in a recent changed to edebug.
| | * Revert "Mark breakpoints in edebug with highlights". This fixes bug #40992Alan Mackenzie2020-05-031-40/+1
| | | | | | | | | | | | | | | | | | Do not merge to master. This reverts commit e8b3a15cb6ff187ce08afcb43bd9a0b7907268ca.
| * | Add new filter command to Package Menu (Bug#39903)Pieter van Oostrum2020-05-091-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/package.el (package-menu-filter-marked): New filter command. * test/lisp/emacs-lisp/package-tests.el (package-test-list-filter-marked): New test. (package-menu-mode-menu): (package-menu-mode-map): Update menu to include new filter command. * doc/emacs/package.texi (Package Menu): Document the new command. * etc/NEWS: Announce the new command.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-05-092-20/+12
|\| |
| * | Make pcase pattern 'eieio' respect slot access related functions.Zhu Zihao2020-05-081-10/+7
| | | | | | | | | | | | | | | * lisp/emacs-lisp/eieio.el: Make pcase pattern respect slot-missing and slot-unbound
| * | Don't increment array index in cl-loop twice (Bug#40727)Noam Postavsky2020-05-071-1/+2
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause): Put the temp-idx increment in cl--loop-body, leaving just the side-effect free testing of the index for both cl--loop-body and cl--loop-conditions. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-loop-and-arrays): Extend test to cover this case.
| * | Revert "cl-loop: Calculate the array length just once"Noam Postavsky2020-05-071-10/+4
| | | | | | | | | | | | | | | | | | | | | | | | It fails when using 'and' (parallel bindings) for arrays (Bug#40727). * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause): Revert to recomputing array length. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-loop-and-arrays): New test.
* | | * Add 'comp-deferred-compilation-black-list' customizeAndrea Corallo2020-05-091-1/+13
| | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-deferred-compilation-black-list): New customize. (native-compile-async): Make use of 'comp-deferred-compilation-black-list'.
* | | * Fix bug#41112Andrea Corallo2020-05-071-30/+42
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-jump-table-optimizable): New function. (comp-emit-switch): Make use of 'comp-jump-table-optimizable'.
* | | * Add native compilation unit black listAndrea Corallo2020-05-061-1/+15
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-bootstrap-black-list): New customize. (batch-native-compile): Rework to make use of 'comp-bootstrap-black-list'. (batch-byte-native-compile-for-bootstrap): Add assertion to make logic assumption explicit.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-05-046-29/+41
|\| |
| * | * lisp/emacs-lisp/eieio.el (oset, oset-default): Mark as obsoleteStefan Monnier2020-05-031-2/+4
| | |
| * | Use lexical-binding in check-declare.el and add testsSimen Heggestøyl2020-05-031-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/check-declare.el: Use lexical-binding. (check-declare-warn): Silence byte compiler warning about unused lexical argument. * test/lisp/emacs-lisp/check-declare-tests.el: New file with tests for check-declare.el.
| * | Remove redundant :groups args missed in last commitStefan Kangas2020-05-031-8/+4
| | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-indent.el (lisp-lambda-list-keyword-alignment) (lisp-lambda-list-keyword-parameter-indentation) (lisp-lambda-list-keyword-parameter-alignment) (lisp-indent-backquote-substitution-mode): Remove redundant :group args.
| * | Improve indentation of 'loop' formsStefan Kangas2020-05-031-14/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-indent.el (lisp-loop-keyword-indentation) (lisp-loop-forms-indentation, lisp-simple-loop-indentation): Use a more standard indentation of 'loop' forms. (Bug#2160) (lisp-indent-maximum-backtracking, lisp-tag-indentation) (lisp-tag-body-indentation, lisp-backquote-indentation) (lisp-loop-keyword-indentation, lisp-loop-forms-indentation) (lisp-simple-loop-indentation): Remove redundant :group args.
| * | Inhibit modification hooks when saving eieio-persistent'sMichael Heerdegen2020-05-011-1/+2
| | | | | | | | | | | | | | | * lisp/emacs-lisp/eieio-base.el (eieio-persistent-save): Bind inhibit-modification-hooks -> t.
| * | Add lisp-data-mode for editing non-code Lisp dataJoão Távora2020-05-011-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes: bug#40573 The new mode can be used stand-alone or inherited from by modes intended to edit programs. The existing emacs-lisp-mode and lisp-mode are examples. Thanks to Juri Linkov and Basil L. Contovounesios for researching some data files in Emacs that can be automatically set to use the new mode. * lisp/files.el (auto-mode-alist): Add entry for ".dir-locals" and ".dir-locals-2" * lisp/emacs-lisp/lisp-mode.el: (lisp-data-mode): New major mode. (lisp-mode): Inherit from lisp-data-mode. Set special lisp-mode stuff here. * lisp/progmodes/elisp-mode.el (emacs-lisp-mode): Inherit from lisp-data-mode. * lisp/bookmark.el (bookmark-insert-file-format-version-stamp): Use lisp-data-mode. * lisp/saveplace.el (save-place-alist-to-file): Use lisp-data-mode. * lisp/net/eww.el (eww-write-bookmarks): Use lisp-data-mode. * lisp/net/nsm.el (nsm-write-settings): Use lisp-data-mode. * lisp/net/tramp-cache.el (tramp-dump-connection-properties): Use lisp-data-mode. * etc/NEWS: Mention lisp-data-mode. * doc/lispref/modes.texi (Example Major Modes): Update example.
| * | Make `make-local-variable' declare the var locally dynamicMichael Heerdegen2020-04-301-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | The only effect of this change is to get rid of some unnecessary "assignment to free variable" warnings. * lisp/emacs-lisp/bytecomp.el (byte-compile-make-local-variable): New function.