summaryrefslogtreecommitdiff
path: root/lisp
Commit message (Collapse)AuthorAgeFilesLines
* Allow per function speed declarationAndrea Corallo2020-06-223-53/+92
| | | | | | | | | | | | | | | | | | | | | * src/comp.c (COMP_SPEED): Rename. (comp_t): Add 'func_speed' field. (emit_mvar_lval, compile_function): Update for per function speed. (Fcomp__compile_ctxt_to_file): COMP_SPEED renamed. * lisp/emacs-lisp/comp.el (comp-speed): Doc update. (comp-func): New 'speed' slot. (comp-spill-speed): New function. (comp-spill-lap-function, comp-intern-func-in-ctxt): Fill 'speed' slot. (comp-spill-lap-function): Gate -1 speed functions for native compilation and emit bytecode instead. (comp-spill-lap): Close over `byte-to-native-plist-environment'. (comp-latch-make-fill): Update for per function speed. (comp-limplify-top-level): Fill speed. (comp-propagate1, comp-call-optim-form-call, comp-call-optim) (comp-dead-code, comp-tco, comp-remove-type-hints): Update for per function speed.
* Execute top level forms in the right lex/dyn scope.Andrea Corallo2020-06-222-8/+11
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-to-native-top-level): Add 'lexical' slot. (byte-compile-output-file-form): Update for new slot. (byte-compile-file-form-defmumble): Capture scope. * lisp/emacs-lisp/comp.el (comp-emit-for-top-level): Specify execution scope.
* Add native compiler dynamic scope supportAndrea Corallo2020-06-191-63/+83
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add an initial implementation to support dynamic scope. Arg parsing/binding it's done using the existing code in use for bytecode (no ad-hoc code is synthetized for that). * src/lisp.h (struct Lisp_Subr): Add lambda_list field. (SUBR_NATIVE_COMPILED_DYNP): New inliner. * src/alloc.c (mark_object): Update for Add lambda_list field. * src/eval.c (eval_sub, Ffuncall, funcall_lambda): Handle native compiled dynamic scope * src/comp.c (declare_lex_function): Rename from declare_function and rework. (declare_function): New function. (make_subr): Handle daynamic scope * src/pdumper.c (dump_subr): Update for lambda_list field. * lisp/emacs-lisp/comp.el (comp-func): Remove args slot. (comp-func-l, comp-func-d): New classes deriving from `comp-func'. (comp-spill-lap-function): Rework. (comp-prepare-args-for-top-level): New function. (comp-emit-for-top-level, comp-emit-lambda-for-top-level): Make use of `comp-prepare-args-for-top-level'. (comp-limplify-top-level): Use `comp-func-l'. (comp-limplify-function): Emit arg prologue only for dynamic scoped functions. (comp-call-optim-form-call): Use `comp-func-l'. (comp-call-optim, comp-tco): Do not optimize dynamic scoped code.
* * Introduce latchesAndrea Corallo2020-06-131-36/+76
| | | | | | | | | | | | | | | | | | | Define a new kind of basic block 'latch' to close over loops. Its purpose is for now to emit calls to `comp-maybe-gc-or-quit' but in future will be usefull for the loop optimizer to exploit unboxes. * lisp/emacs-lisp/comp.el (comp-block): New base class. (comp-block-lap): New class for LAP derived basic blocks. (comp-latch): New class. (comp-bb-maybe-add, comp-make-curr-block, comp-emit-handler) (comp-emit-switch, comp-emit-switch, comp-limplify-top-level) (comp-addr-to-bb-name, comp-limplify-block) (comp-limplify-function): Update logic for new bb objects arrangment. (comp-latch-make-fill): New function. (comp-emit-uncond-jump, comp-emit-cond-jump): Update to emit latches. (comp-new-block-sym): Add a postfix paramenter.
* Merge remote-tracking branch 'savahnna/master' into HEADAndrea Corallo2020-06-119-111/+183
|\
| * ; * lisp/faces.el (readable-foreground-color): Fix editing mistake.Mattias Engdegård2020-06-111-1/+2
| |
| * Improved light/dark colour predicate (bug#41544)Mattias Engdegård2020-06-103-28/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a predicate, color-dark-p, for deciding whether a colour is more readable with black or white as contrast. It has experimentally been shown to be more accurate and robust than the various methods currently employed. The new predicate compares the relative luminance of the colour to an empirically determined cut-off value, and it seems to get it right in almost all cases, with no value leading to outright bad results. * lisp/faces.el (readable-foreground-color): Use color-dark-p. (color-dark-p): New function. * lisp/facemenu.el (list-colors-print): Use readable-foreground-color, improving readability of list-colors-display. * lisp/textmodes/css-mode.el (css--contrasty-color): Remove. (css--fontify-region): Use readable-foreground-color.
| * Futher tramp-crypt implementation and documentationMichael Albinus2020-06-101-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/misc/tramp.texi (Top, Configuration): Insert section `Keeping files encrypted' in menu. (Keeping files encrypted): New node. * lisp/net/tramp-crypt.el (tramp-crypt-file-name-handler-alist): Add `tramp-set-file-uid-gid'. (tramp-crypt-maybe-open-connection): Simplify. (tramp-crypt-do-encrypt-or-decrypt-file): Use `binary' coding system. (tramp-crypt-handle-set-file-uid-gid): New defun. * test/lisp/net/tramp-tests.el (tramp-test09-insert-file-contents): Adapt test.
| * Slightly improve commit 73be4d1ed5b190bd93e9bad6aebe43d0dea0d7d3.Philipp Stephani2020-06-101-4/+4
| | | | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl-lambda-list, cl-lambda-list1) (cl-macro-list, cl-macro-list1): Use exactly the same specification as for &optional (sans the third optional list element).
| * Allow destructuring in &aux sections when using edebug (Bug#40431)Philipp Stephani2020-06-101-4/+4
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl-lambda-list, cl-lambda-list1) (cl-macro-list, cl-macro-list1): Allow arbitrary 'cl-lambda' arguments in the &aux section. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-aux-edebug): New regression test.
| * ; Simplify last changeBasil L. Contovounesios2020-06-101-1/+0
| | | | | | | | | | * lisp/progmodes/project.el (project--read-project-list): We are already at BOB after insert-file-contents.
| * Save project list as lisp dataSimen Heggestøyl2020-06-091-13/+9
| | | | | | | | | | | | | | | | | | | | Save the project list file as lisp data instead of line separated strings to make it more extendable in the future. * lisp/progmodes/project.el (project--read-project-list) (project--write-project-list, project--add-to-project-list-front) (project--remove-from-project-list): Adjust to `project--list' now being an alist.
| * Orthographical amendments to commit 145aab0672ae259736ee9230f8e0ff4effa5f4fdAlan Mackenzie2020-06-091-9/+9
| | | | | | | | | | | | | | * etc/NEWS: Correct the spelling of CC Mode. * lisp/progmodes/cc-fonts.el (doxygen-font-lock-doc-comments): Replace curly quotes in comments by ASCII ones.
| * Continue implementation of tramp-crypt.elMichael Albinus2020-06-091-23/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/net/tramp-crypt.el (tramp-crypt-do-encrypt-or-decrypt-file): Add leading "/" to infile. (tramp-crypt-add-directory): Fix docstring. Expand NAME. (tramp-crypt-remove-directory) (tramp-crypt-handle-file-name-all-completions) (tramp-crypt-handle-set-file-times): New defuns. (tramp-crypt-handle-file-executable-p) (tramp-crypt-handle-file-readable-p) (tramp-crypt-handle-file-system-info) (tramp-crypt-handle-set-file-modes): Fix implementation. * test/lisp/net/tramp-tests.el: Adapt call convention for (tramp--test-crypt-p).
| * * lisp/simple.el (shell-command-on-region): Handle nil replace on rectangles.Juri Linkov2020-06-091-4/+19
| | | | | | | | | | | | When 'region-noncontiguous-p' is non-nil (rectangular region) but 'replace' is nil, pop up the shell output buffer (bug#41440). When 'replace' is non-nil, trim the trailing newline.
| * Add autoload problem in tramp-crypt.el.Michael Albinus2020-06-081-16/+20
| | | | | | | | | | | | | | | | | | | | * lisp/net/tramp-crypt.el (tramp-crypt-encfs-config): Add ;;;###tramp-autoload cookie. (tramp-crypt-directories): Move it up. (tramp-crypt-file-name-p): Move it up. Add ;;;###tramp-autoload cookie. Make it a defsubst. * test/lisp/net/tramp-tests.el (tramp-crypt): Do not require.
| * Use lexical-binding in lunar.el and add testsStefan Kangas2020-06-071-8/+9
| | | | | | | | | | | | * lisp/calendar/lunar.el: Use lexical-binding. (lunar-phases, diary-lunar-phases): Silence byte-compiler. * test/lisp/calendar/lunar-tests.el: New file.
* | * Fix usage of cl-destructuring-bind in package--delete-directory.Nicolás Bértolo2020-06-091-1/+1
| | | | | | | | | | * lisp/emacs-lisp/package.el (package--delete-directory): Fix usage of cl-destructuring-bind.
* | * Move final log after containers has been finalizedAndrea Corallo2020-06-081-3/+3
| | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-final): Remove function log. (comp-compile-ctxt-to-file): Add function log.
* | Merge remote-tracking branch 'savannah/master' into devAndrea Corallo2020-06-0716-100/+901
|\|
| * * lisp/emacs-lisp/byte-opt.el (side-effect-free-fns): Add `make-byte-code'.Andrea Corallo2020-06-071-2/+2
| | | | | | | | | | | | `make-byte-code' wraps `vector' doing some sanity check on the input arguments. `vector' is in side-effect-and-error-free-fns so add `make-byte-code' to side-effect-free-fns.
| * Merge from origin/emacs-27Glenn Morris2020-06-075-26/+50
| |\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 35661ef943 (origin/emacs-27) Fix typo in "(elisp) Type Keywords" 1af0e95fec Gnus nnir-summary-line-format has no effect dd366b5d3b Improve documentation of 'window-text-pixel-size' fbd49f969e * src/xdisp.c (Fwindow_text_pixel_size): Doc fix. (Bug#41... d8593fd19f Minor improvements to EDE and EIEIO manuals 3916e63f9e Have Fido mode also imitate Ido mode in ignore-case options cc35b197c7 Update package-menu-quick-help bf09106256 Improve documentation of 'sort-subr' 73749efa13 Update Ukrainian transliteration 30a7ee505a Fix Arabic shaping when eww/shr fill the text to be rendered 7d323f07c0 Silence some byte-compiler warnings in tests cf473e742f * test/lisp/battery-tests.el: New file. b07e3b1d97 Improve format-spec documentation (bug#41571) # Conflicts: # test/lisp/emacs-lisp/package-tests.el
| | * Gnus nnir-summary-line-format has no effectTassilo Horn2020-06-071-3/+6
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/gnus/nnir.el (nnir-mode): Update summary format specs if nnir-summary-line-format is set and different from gnus-summary-line-format. (nnir-open-server): Run nnir-mode in gnus-summary-generate-hook instead of gnus-summary-prepared-hook.
| | * Have Fido mode also imitate Ido mode in ignore-case optionsJoão Távora2020-06-051-1/+4
| | | | | | | | | | | | | | | | | | | | | Suggested by Sean Whitton <spwhitton@spwhitton.name>. * lisp/icomplete.el (icomplete--fido-mode-setup): Set ignore-case options.
| | * Update package-menu-quick-helpBasil L. Contovounesios2020-06-051-2/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/package.el (package--quick-help-keys): Filtering is now bound to the prefix '/', not the key 'f' (bug#41721). Advertise only the standard 'g' binding now that both it and 'r' are bound to revert-buffer (bug#35504). (package--prettify-quick-help-key): Avoid modifying string literals. (package-menu-filter): Reintroduce as obsolete alias of package-menu-filter-by-keyword for backward compatibility (bug#36981).
| | * Update Ukrainian transliterationAndrii Kolomoiets2020-06-051-1/+5
| | | | | | | | | | | | | | | * lisp/language/cyril-util.el (standard-display-cyrillic-translit): Add missing letter "ґ"; tweak letter "г". (Bug#41683)
| | * Improve format-spec documentation (bug#41571)Basil L. Contovounesios2020-06-021-19/+30
| | | | | | | | | | | | | | | | | | | | | | | | | | | * doc/lispref/text.texi (Interpolated Strings): Move from here... * doc/lispref/strings.texi (Custom Format Strings): ...to here, renaming the node and clarifying the documentation. (Formatting Strings): End node with sentence referring to the next one. * lisp/format-spec.el (format-spec): Clarify docstring.
| | * ; Auto-commit of loaddefs files.Glenn Morris2020-06-011-27/+55
| | |
| * | * lisp/progmodes/js.el (js-mode): Remove second call to c-init-language-varsAlan Mackenzie2020-06-071-1/+0
| | | | | | | | | | | | | | | This spurious second call fouled up already set configuration variables. Fixes bug #41649.
| * | Add file encryption to TrampMichael Albinus2020-06-072-3/+742
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/net/tramp-crypt.el: New file. * lisp/net/tramp.el (tramp-run-real-handler): Add `tramp-crypt-file-name-handler'. (tramp-register-file-name-handlers): Call `tramp-register-crypt-file-name-handler'. (tramp-handle-insert-file-contents, tramp-local-host-p): Check for `tramp-crypt-enabled' * test/lisp/net/tramp-tests.el (tramp--test-crypt-p): New defun. (tramp-test24-file-acl, tramp-test25-file-selinux) (tramp-test28-process-file, tramp-test29-start-file-process) (tramp-test30-make-process, tramp-test31-interrupt-process) (tramp-test32-shell-command) (tramp-test32-shell-command-dont-erase-buffer) (tramp-test33-environment-variables) (tramp-test33-environment-variables-and-port-numbers) (tramp-test34-explicit-shell-file-name, tramp-test35-exec-path) (tramp-test35-remote-path, tramp-test36-vc-registered) (tramp--test-check-files, tramp-test43-asynchronous-requests): Use it.
| * | Tramp code cleanupMichael Albinus2020-06-073-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/net/tramp-cache.el (tramp-get-connection-property): Cleanup. * lisp/net/tramp-cmds.el (tramp-cleanup-all-connections): Delete also connection processes. * lisp/net/tramp-sh.el (tramp-set-remote-path): Cache 4096 even if PIPE_BUF doesn't exist.
| * | Use 65535 as color-values scale value in the NS backendMattias Engdegård2020-06-071-1/+1
| | | | | | | | | | | | | | | | | | | | | * src/nsfns.m (Fxw_color_values): Scale with 65535 instead of 65280, for uniformity with other backends. * lisp/faces.el (color-values): Update doc string. * doc/lispref/frames.texi (Color Names): Update examples.
| * | The key prefix 'C-x t t' displays next command buffer in a new tab (bug#41691)Juri Linkov2020-06-073-54/+93
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/tab-bar.el (other-tab-prefix): New command. (tab-prefix-map): Bind key 'C-x t t' to other-tab-prefix. * lisp/windmove.el (windmove-display-in-direction): Use display-buffer-override-next-command. * lisp/window.el (display-buffer-override-next-command): New function refactored from windmove-display-in-direction.
* | | * Rename comp-function-optimizable -> comp-function-optimizable-pAndrea Corallo2020-06-071-2/+2
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-function-optimizable): Rename into 'comp-function-optimizable-p'. (comp-function-call-maybe-remove): Use the new name.
* | | * Fix comp-call-optim-form-call for null `callee'Andrea Corallo2020-06-071-1/+2
| | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-call-optim-form-call): Guard agains null `calle'.
* | | * Improve propagate passAndrea Corallo2020-06-071-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | As function folding can generate 'setimm' insns handle them in the `comp-propagate-insn'. * lisp/emacs-lisp/comp.el (comp-propagate-insn): Handle 'setimm' insn.
* | | * Optimize optimizable variablesAndrea Corallo2020-06-071-11/+26
| | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-symbol-values-optimizable): New defconst. (comp-function-call-maybe-remove): New logic to to remove unnecessary `symbol-value' calls.
* | | * Mitigate possible speed 3 miss-optimizationAndrea Corallo2020-06-061-1/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Do not perform trampoline optimization at speed 3 on function if their name is not unique inside the compilation unit. Note that the function can still be redefined in any other way therefore this is a mitigation. * lisp/emacs-lisp/comp.el (comp-func-unique-in-cu-p): New predicate. (comp-call-optim-form-call): Perform trampoline optimization for named functions only if they are unique within the current compilation unit.
* | | * Allow for optimizing anonymous lambdas in call-optimAndrea Corallo2020-06-061-7/+23
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/comp.el (comp-func-in-unit): New function. (comp-call-optim-form-call): Update logic for optimizing anonymous lambdas.
* | | Change 'direct-call' 'direct-callref' LIMPLE ops sematincAndrea Corallo2020-06-061-12/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Is cleaner to have the function c-name as first argument of 'direct-call' 'direct-callref'. This is preparatory to anonymous lambdas optimization. * lisp/emacs-lisp/comp.el (comp-propagate-insn): Use c-name when gathering the comp-func definition for direct calls. (comp-call-optim-form-call): Add put c-name as first argument of direct-call direct-callref when optimizing. * src/comp.c (emit_call): Update logic for having c-name as first arg of direct calls. (emit_call_ref): Rename 'subr_sym' into 'func'.
* | | Merge remote-tracking branch 'savannah/master' into HEADAndrea Corallo2020-06-069-70/+100
|\| |
| * | make-text-button no longer modifies its string argPaul Eggert2020-06-063-5/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | * etc/NEWS: Mention this. * lisp/apropos.el (apropos-library-button): * lisp/ibuf-ext.el (ibuffer-old-saved-filters-warning): There’s no longer a need copy make-text-button’s string arg. * lisp/button.el (make-text-button): Return a copy of a string arg. Delay making the copy until after error-checking.
| * | Un-deprecate oset and oset-defaultBasil L. Contovounesios2020-06-062-13/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For discussion see the following threads: https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00630.html https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00674.html https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00099.html * lisp/emacs-lisp/eieio.el (oset, oset-default): Un-deprecate. * lisp/emacs-lisp/eieio-core.el (eieio-oref): Declare gv-setter here instead of in lisp/emacs-lisp/eieio.el. Suggested by Stefan Monnier <monnier@iro.umontreal.ca>. (eieio-oref-default): Add gv-setter declaration. * etc/NEWS: Announce these changes. * doc/misc/eieio.texi (Accessing Slots): Document oref and oref-default as generalized variables. Consistently document getters before setters. * test/lisp/emacs-lisp/eieio-tests/eieio-tests.el: Use lexical-binding. (eieio-test-13-init-methods): Simplify. (eieio-test-33-instance-tracker): Declare IT-list as special.
| * | Improve battery status display via GNU/Linux sysfsEllington Santos2020-06-061-5/+12
| | | | | | | | | | | | | | | | | | | | | * lisp/battery.el (battery-linux-sysfs): Support %b format. Improve the display of %p. (Bug#41542) Copyright-paperwork-exempt: yes
| * | Fix some side-effecting uses of make-text-buttonBasil L. Contovounesios2020-06-043-5/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For discussion, see the following thread: https://lists.gnu.org/archive/html/emacs-devel/2020-06/msg00117.html * lisp/apropos.el (apropos-library-button): * lisp/help-fns.el (help-fns--first-release): Return result of make-text-button instead of relying on its side effects. * lisp/ibuf-ext.el (ibuffer-old-saved-filters-warning): Avoid modifying an immutable string.
| * | * lisp/dired.el (dired-toggle-marks): Use region for non-nil dired-mark-regionJuri Linkov2020-06-051-22/+40
| | | | | | | | | | | | | | | | | | (dired-mark--region-use-p, dired-mark--region-beginning) (dired-mark--region-end): New internal functions. (dired-mark-if): Use new functions. (Bug#39902)
| * | Change default project list filename to "projects"Simen Heggestøyl2020-06-041-1/+1
| | | | | | | | | | | | | | | * lisp/progmodes/project.el (project-list-file): Change the default filename to "projects".
| * | Use characters for keys in project-switch-commandsSimen Heggestøyl2020-06-041-16/+12
| | | | | | | | | | | | | | | | | | | | | * lisp/progmodes/project.el (project-switch-commands): Use characters for keys instead of string for better future compatibility with 'read-multiple-choice'. (project-switch-project): Adjust to above change.
| * | ; Small cleanup in project.elSimen Heggestøyl2020-06-041-3/+2
| | | | | | | | | | | | | | | * lisp/progmodes/project.el (project--add-to-project-list-front): Minor simplification after recent changes.
| * | * lisp/font-lock.el (font-lock--syntax-table-affects-ppss): New varStefan Monnier2020-06-041-2/+19
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This tries to make `font-lock-syntax-table` work correctly even when it changes the parsing of strings and comments, as was the case in `font-latex.el`. We should probably deprecate the use of `font-lock-syntax-table` since the present fix is still not 100% and since it comes with performance problems in large files. (font-lock-set-defaults): Set it. (font-lock-fontify-syntactically-region): Don't use `syntax-ppss` when we think that `font-lock-syntax-table` would interfere.