summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* Add clarification to if-let* docstringMark Oteiza2017-09-131-4/+5
| | | | | | Also make its behaviour consistent with and-let* in that empty bindings results in success, not failure. * lisp/emacs-lisp/subr-x.el: Edit docstring, change else to then.
* Remove "baroque" use of prefix argument from gensymMark Oteiza2017-09-131-2/+9
| | | | | | | | | 'cl-gensym' was simply moved here, but let us take an opportunity to shed some historical baggage. * lisp/subr.el (gensym): Remove special treatment of PREFIX as a number. Use "g" as prefix to differentiate from cl-gensym defaults. * doc/lispref/symbols.texi (Creating Symbols): Update accordingly. * lisp/emacs-lisp/cl-macs.el (cl--gensym-counter, cl-gensym): Restore.
* ; Fix previous commitMark Oteiza2017-09-131-6/+2
| | | | | | | Removing extraneous code, thanks to Michael Heerdegen. * lisp/emacs-lisp/subr-x.el (internal--listify): Remove latter condition which always evaluates to t. (internal--build-binding-value-form): Remove dead code.
* Update uses of if-let and when-letMark Oteiza2017-09-121-13/+13
| | | | | | | | | | | | | | | | | | | | | | | | | * lisp/dom.el (dom-previous-sibling): * lisp/emacs-lisp/package.el (package--with-work-buffer): (package--sort-deps-in-alist, package--sort-by-dependence): (package-install-from-archive, package-install): (package-menu-execute, package-menu--populate-new-package-list): * lisp/filenotify.el (file-notify--rm-descriptor): (file-notify--event-watched-file, file-notify--event-file-name): (file-notify--event-file1-name, file-notify-rm-watch): (file-notify-valid-p): * lisp/gnus/message.el (message-toggle-image-thumbnails): * lisp/gnus/nnimap.el (nnimap-request-move-article): * lisp/ibuf-ext.el (ibuffer-repair-saved-filters): * lisp/mpc.el (mpc-format): * lisp/net/eww.el (eww-tag-meta, eww-process-text-input): (eww-save-history): * lisp/net/shr.el (shr-tag-base, shr-tag-object, shr-make-table-1): * lisp/progmodes/prog-mode.el (prettify-symbols--post-command-hook): * lisp/svg.el (svg-remove): * lisp/textmodes/css-mode.el (css--named-color): (css--colon-inside-funcall): * lisp/textmodes/sgml-mode.el (html-current-buffer-classes): (html-current-buffer-ids): Use if-let* and when-let* instead.
* Implement and-let*Mark Oteiza2017-09-121-38/+70
| | | | | | | | | | | | | | | | | | | | This also includes changes to if-let and when-let. The single tuple special case is ambiguous, and binding a symbol to nil is not as useful as binding it to its value outside the lexical scope of the binding. (Bug#28254) * etc/NEWS: Mention. * lisp/emacs-lisp/subr-x.el (internal--listify): (internal--build-binding-value-form): Extend to account for solitary symbols and (EXPR) items in binding varlist. (if-let*, when-let*): Nix single tuple case and incumbent bind-symbol-to-nil behavior. (and-let*): New macro. (if-let, when-let): Mark obsolete. Redefine in terms of if-let*, so they implicitly gain the new features without breaking existing code. * test/lisp/emacs-lisp/subr-x-tests.el: Adjust tests for: lack of single-tuple special case, lack of binding solitary symbols to nil, and the introduction of uninterned symbols for (EXPR) bindings. Add SRFI-2 test suite adapted to Elisp.
* Move gensym to core ElispMark Oteiza2017-09-129-32/+21
| | | | | | | | | | | | | | | | | | | | | * doc/lispref/symbols.texi (Creating Symbols): Mention gensym right after make-symbol. * etc/NEWS: Mention. * lisp/emacs-lisp/cl-macs.el (cl--gensym-counter): Alias to gensym-counter. (cl-gensym): Alias to gensym. * lisp/emacs-lisp/cl.el: Remove gensym from list of aliases. * lisp/emacs-lisp/edebug.el (edebug-make-enter-wrapper): * lisp/emacs-lisp/ert-x.el (ert-with-message-capture): (ert--expand-should-1, ert--expand-should): (ert--should-error-handle-error): * lisp/emacs-lisp/generator.el (cps--gensym): * lisp/emacs-lisp/gv.el (setf): * lisp/emacs-lisp/inline.el (inline--do-letlisteval): * lisp/emacs-lisp/pcase.el (pcase--make-docstring, pcase-dolist): (pcase--funcall, pcase--u1): Use gensym. * lisp/subr.el (gensym-counter): New variable. (gensym): New function, assimilated from cl-lib.
* Fix cl-gentempMark Oteiza2017-09-121-4/+5
| | | | | * lisp/emacs-lisp/cl-macs.el (cl--gentemp-counter): New variable. (cl-gentemp): Use it. Change prefix to "T".
* Add cl-print method for hash tablesMark Oteiza2017-09-111-0/+10
| | | | * lisp/emacs-lisp/cl-print.el (cl-print-object): New method.
* Add docstrings to cl-print entry pointsMark Oteiza2017-09-111-1/+8
| | | | | * lisp/emacs-lisp/cl-print.el (cl-print-compiled): Fix docstring. (cl-prin1, cl-prin1-to-string): Add docstrings.
* ; Fix previous commitMark Oteiza2017-09-111-1/+1
| | | | | The printer otherwise includes the 0x prefix. * lisp/emacs-lisp/cl-print.el: Add 0x to format.
* Include sxhash of object with printed bytecodeMark Oteiza2017-09-111-1/+1
| | | | | | | | This printing, while succint, is rather opaque. At least give an immediate clue of whether different byte code printouts are for the same or different byte code objects. * lisp/emacs-lisp/cl-print.el (cl-print-object): Add object sxhash to printed token "#<bytecode>".
* ; * lisp/emacs-lisp/ert.el (ert-batch-backtrace-right-margin): Fix tag.Glenn Morris2017-09-051-1/+1
|
* Allow customizing line length of ert backtraces in batch modeGlenn Morris2017-09-051-12/+19
| | | | | | * lisp/emacs-lisp/ert.el (ert-batch-backtrace-right-margin): Make it a user option. (ert-run-tests-batch): Handle ert-batch-backtrace-right-margin nil.
* Turn off checkdoc complaint about default argument orderMark Oteiza2017-09-011-1/+2
| | | | | | * etc/NEWS: Mention change. * lisp/emacs-lisp/checkdoc.el (checkdoc-arguments-in-order-flag): Disable by default, note version.
* Support lazy loading for autogenerated usage docstrings too (Bug#27748)Noam Postavsky2017-08-301-1/+1
| | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file-form-defmumble): Consider any documentation that ended up in code as a docstring (e.g., autogenerated (fn ARG1 ARG2) type things), not just what the user passed.
* Drop docstrings from cl-defsubst produced inline bodies (Bug#27748)Noam Postavsky2017-08-301-1/+2
| | | | | * lisp/emacs-lisp/cl-macs.el (cl-defsubst): Use macroexp-parse-progn to drop the docstring. Add a simple docstring to the compiler-macro.
* Minor simplification for byte-compile-constant-pushNoam Postavsky2017-08-291-5/+4
| | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-constant): Move the meat of the code from here... (byte-compile-constant-push): ... to here. No need to bind byte-compile--for-effect anymore.
* Fix over-protection of byte-compiled filesPaul Eggert2017-08-262-1/+12
| | | | | | | | | | Problem reported by Sven Joachim (Bug#28244). Also, fix similar problem for autoload files. * lisp/emacs-lisp/autoload.el (autoload--save-buffer): Set temp file modes to the buffer-file-name file modes (or 666 if not available) as adjusted by umask. * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Set temp file modes to 666 as adjusted by umask.
* * lisp/emacs-lisp/package.el: Don't let failure stop usStefan Monnier2017-08-251-27/+33
| | | | | | (package-activate-1): Don't throw an error for missing deps. (package-unpack): Don't bother compiling if activation failed. (package-initialize): Report failures but keep activating other packages.
* Simplify eldoc-messageDmitry Gutov2017-08-211-11/+4
| | | | | * lisp/emacs-lisp/eldoc.el (eldoc-message): Simplify. Don't use ARGS because no callers pass them. Discussed in bug#27230.
* Stop printing '4' in .elc files after 'define-symbol-prop' callsNoam Postavsky2017-08-191-1/+2
| | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-define-symbol-prop): Return nil in case we have compiled the form, to prevent a redundant constant from getting added to the compiled output.
* Improve support of display-line-numbers in package.elEli Zaretskii2017-08-192-5/+8
| | | | | | | | * lisp/emacs-lisp/package.el (package-menu--refresh): Redisplay the header. (Bug#27895) * lisp/emacs-lisp/tabulated-list.el (tabulated-list-line-number-width): Fix the case when display-line-numbers is nil.
* ; Fix last changeEli Zaretskii2017-08-191-3/+4
| | | | | * lisp/emacs-lisp/tabulated-list.el (tabulated-list-line-number-width): Fix last change.
* Improve support of display-line-numbers in tabulated-list-modeEli Zaretskii2017-08-191-2/+13
| | | | | | | * lisp/emacs-lisp/tabulated-list.el (tabulated-list-line-number-width): New function. (tabulated-list-init-header, tabulated-list-print-entry): Use it. (Bug#27895)
* Adapt tabulated list when display-line-number is turned onEli Zaretskii2017-08-121-1/+3
| | | | | | * lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode): Add a hook to revert the display when display-line-numbers is turned on. (Bug#27895)
* Add new face 'header-line-highlight'Alexander Gramiak2017-08-121-1/+1
| | | | | | | | * lisp/faces.el: Define the face. * lisp/emacs-lisp/tabulated-list.el (tabulated-list-init-header): * lisp/info.el (Info-fontify-node): Use the new face. * doc/emacs/display.texi (Standard Faces): * etc/NEWS: Document the new face. (Bug#28033)
* Don't define gv expanders in compiler's runtime (Bug#27016)Noam Postavsky2017-08-071-6/+1
| | | | | | | | This prevents definitions being compiled from leaking into the current Emacs doing the compilation. * lisp/emacs-lisp/gv.el (gv-define-expander): Use function-put instead of `put' with `eval-and-compile'. * test/lisp/emacs-lisp/gv-tests.el: New tests.
* Let the cl-typep effects of defclass work during compilation (Bug#27718)Noam Postavsky2017-08-071-1/+1
| | | | | | | | | * lisp/emacs-lisp/eieio.el (defclass): Use `define-symbol-prop' instead of `put'. * test/lisp/emacs-lisp/eieio-tests/eieio-tests.el (eieio-tests--dummy-function): Remove. (eieio-test-25-slot-tests, eieio-test-23-inheritance-check): Don't expect to fail if compiled.
* Let `define-symbol-prop' take effect during compilationStefan Monnier2017-08-071-0/+29
| | | | | | | | | | | | * src/fns.c (syms_of_fns): New variable `overriding-plist-environment'. (Fget): Consult it. * lisp/emacs-lisp/bytecomp.el (byte-compile-close-variables): Let-bind it to nil. (byte-compile-define-symbol-prop): New function, handles compilation of top-level `define-symbol-prop' and `function-put' calls by putting the symbol setting into `overriding-plist-environment'. Co-authored-by: Noam Postavsky <npostavs@gmail.com>
* Don't error on circular values in testcoverNoam Postavsky2017-08-071-2/+8
| | | | | * lisp/emacs-lisp/testcover.el (testcover-after, testcover-1value): Consider circular lists to be non-equal instead of signaling error.
* Catch argument and macroexpansion errors in ertAlexander Gramiak2017-08-071-9/+32
| | | | | | | | | | | | This kludge catches errors caused by evaluating arguments in ert's should, should-not, and should-error macros; it also catches macroexpansion errors inside of the above macros (Bug#24402). * lisp/emacs-lisp/ert.el: (ert--should-signal-hook): New function. (ert--expand-should-1): Catch macroexpansion errors. * test/lisp/emacs-lisp/ert-tests.el (ert-test-should-error-argument) (ert-test-should-error-macroexpansion): Tests for argument and expansion errors.
* Fix a couple of make-temp-file racesPaul Eggert2017-08-052-24/+26
| | | | | | | | | * lisp/emacs-lisp/autoload.el (autoload--save-buffer): * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Use make-temp-file, not make-temp-name, to avoid an unlikely race that could lose data. Remove the deletion hook as quickly as possible after the file is renamed; though a race still remains here, it is smaller than before.
* Make header line in some modes be sensitive to display-line-numbersEli Zaretskii2017-08-051-0/+4
| | | | | | | * lisp/ruler-mode.el (ruler-mode-ruler, ruler-mode-window-col): * lisp/emacs-lisp/tabulated-list.el (tabulated-list-init-header) (tabulated-list-print-entry): Account for the width taken by line-number display. (Bug#27895)
* ; * lisp/emacs-lisp/re-builder.el: Fix commentary (Bug#27947).Noam Postavsky2017-08-041-2/+2
|
* Implement iterator generator for avl-trees.Toby S. Cubitt2017-08-041-1/+16
| | | | * lisp/emacs-lisp/avl-tree.el (avl-tree-iter): New iter-defun.
* * lisp/subr.el (define-symbol-prop): New functionStefan Monnier2017-07-282-11/+4
| | | | | | | | (symbol-file): Make it find symbol property definitions. * lisp/emacs-lisp/pcase.el (pcase-defmacro): * lisp/emacs-lisp/ert.el (ert-set-test): Use it instead of `put'. (ert-describe-test): Adjust call to symbol-file accordingly.
* * lisp/subr.el (method-files): Move function to cl-generic.elStefan Monnier2017-07-282-2/+20
| | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl-generic-p): New function. (cl--generic-method-files): New function, moved from subr.el. * lisp/emacs-lisp/edebug.el (edebug-instrument-function): Use them. * test/lisp/emacs-lisp/cl-generic-tests.el: * test/lisp/subr-tests.el: Move and adjust method-files tests accordingly.
* * lisp/loadhist.el (unload-feature): Remove ad-hoc ELP codeStefan Monnier2017-07-271-0/+5
| | | | * lisp/emacs-lisp/elp.el (loadhist-unload-element): Un-instrument functions.
* * lisp/emacs-lisp/cl-generic.el (cl-generic-define-method):Stefan Monnier2017-07-261-17/+18
| | | | Record this as the function's definition site if it's the first def.
* Stop using unibyte buffers for ert backtracesGlenn Morris2017-07-261-2/+1
| | | | | | | | * lisp/emacs-lisp/ert.el (ert-results-pop-to-backtrace-for-test-at-point): Set multibyte true, not false. This copies a debugger-setup-buffer change from 2009-08-30, and stops the "Backtrace for" header line containing ^X and ^Y.
* Fix cl-defmethod indentationGrégoire Jadi2017-07-261-1/+1
| | | | | * lisp/emacs-lisp/cl-generic.el (cl-defmethod): Declare (indent defun). Fixes bug#23994.
* * lisp/emacs-lisp/eieio-compat.el (eieio--defgeneric-init-form):Stefan Monnier2017-07-251-1/+2
| | | | Adjust to change in cl-generic-ensure-function.
* (loadhist-unload-element): Move ERT and cl-generic methodsStefan Monnier2017-07-242-8/+21
| | | | | | | | | | | | | | | * lisp/loadhist.el (loadhist-unload-element): Don't define cl-generic and ert methods here. (loadhist-unload-element) <(head define-type)>: Remove unused var `slots'. * lisp/emacs-lisp/cl-generic.el (loadhist-unload-element): Define unload method for cl-defmethod. (cl-generic-ensure-function): Remove redundant `defalias'. * lisp/emacs-lisp/ert.el (ert-set-test): Move the current-load-list setting here... (ert-deftest): ...from here. (loadhist-unload-element): Define unload method for ert-deftest.
* Add 'rx' pattern for pcase.Philipp Stephani2017-07-232-1/+56
| | | | | * lisp/emacs-lisp/rx.el (rx): New pcase macro. * test/lisp/emacs-lisp/rx-tests.el (rx-pcase): Add unit test.
* ElDoc: add docstrings and minor refactoringCharles A. Roelli2017-07-221-11/+38
| | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/eldoc.el (eldoc-edit-message-commands): Add docstring. (turn-on-eldoc-mode): Fix capitalization. (eldoc--supported-p): Add docstring. (eldoc-schedule-timer): Add docstring and use 'eldoc--supported-p'. (eldoc-message): Add docstring and make calling convention clearer. (eldoc--message-command-p): (eldoc-pre-command-refresh-echo-area): (eldoc-display-message-p): (eldoc-display-message-no-interference-p): (eldoc-print-current-symbol-info): (eldoc-docstring-format-sym-doc): (eldoc-add-command, eldoc-add-command-completions): (eldoc-remove-command, eldoc-remove-command-completions): Add docstring. (Bug#27230)
* * lisp/emacs-lisp/nadvice.el (advice--defalias-fset): Strip advicesStefan Monnier2017-07-181-0/+12
| | | | This tries to make sure that (defalias F (symbol-function F)) stays a no-op.
* Use a more specific test for running on hydra.nixos.orgGlenn Morris2017-07-181-1/+1
| | | | | | | | | | | * lisp/emacs-lisp/ert.el (ert-summarize-tests-batch-and-exit): * test/Makefile.in (WRITE_LOG): * test/lisp/filenotify-tests.el: * test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el (eieio-test-method-order-list-6): * test/lisp/emacs-lisp/eieio-tests/eieio-tests.el (eieio-test-37-obsolete-name-in-constructor): * test/lisp/net/tramp-tests.el: Replace NIX_STORE with EMACS_HYDRA_CI.
* * emacs-lisp/cl-lib.el (cl--old-struct-type-of): Accept `[]'Stefan Monnier2017-07-181-1/+1
|
* * lisp/emacs-lisp/map.el (map-put): Fix redundancy in docstring.Tino Calancha2017-07-171-2/+0
|
* alist-get: Add optional arg TESTFNTino Calancha2017-07-172-10/+17
| | | | | | | | | | | | If TESTFN is non-nil, then it is the predicate to lookup the alist. Otherwise, use 'eq' (Bug#27584). * lisp/subr.el (alist-get): Add optional arg FULL. * lisp/emacs-lisp/map.el (map-elt, map-put): Add optional arg TESTFN. * lisp/emacs-lisp/gv.el (alist-get): Update expander. * doc/lispref/lists.texi (Association Lists): Update manual. * etc/NEWS: Announce the changes. * test/lisp/emacs-lisp/map-tests.el (test-map-put-testfn-alist) (test-map-elt-testfn): New tests.