summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
...
* Mark keywordp as a safe, error-free functionWilfred Hughes2017-05-261-1/+1
| | | | | * lisp/emacs-lisp/byte-opt.el: Add keywordp to side-effect-and-error-free-fns.
* Protect *Backtrace* from being killed (Bug#26650)Noam Postavsky2017-05-231-0/+3
| | | | | * lisp/emacs-lisp/debug.el (debugger-mode): Call `top-level' in `kill-buffer-hook'.
* Give a name to lisp-mode's adaptive-fill-function (Bug#22730)Noam Postavsky2017-05-231-4/+8
| | | | | * lisp/emacs-lisp/lisp-mode.el (lisp-adaptive-fill): New function. (lisp-mode-variables): Use it.
* * lisp/emacs-lisp/cl-indent.el: Don't require CL. Use lexical-binding.Stefan Monnier2017-05-231-18/+16
| | | | | (common-lisp-indent-function-1): Remove unused var `last-point`. (lisp-indent-error-function): Move defvar before first use.
* * lisp/emacs-lisp/package.el (package-delete): Delete readme file as well.Tino Calancha2017-05-211-4/+9
|
* Don't save unrelated buffers before recompiling directory (Bug#25964)Andreas Politz2017-05-201-1/+6
| | | | | * lisp/emacs-lisp/bytecomp.el (byte-recompile-directory): Only save buffers visiting lisp files under the directory being compiled.
* New commands: find-library-other-window, find-library-other-frameCharles A. Roelli2017-05-201-35/+57
| | | | | | | | | * lisp/emacs-lisp/find-func.el (find-library-other-window) (find-library-other-frame): New commands to complement the existing 'find-library' command. (Bug#26712) (read-library-name): New function to read a library name. * etc/NEWS: Mention 'find-library-other-window' and 'find-library-other-frame'.
* * lisp/emacs-lisp/package.el: Quote `package-desc' in docstringsStefan Monnier2017-05-191-12/+12
|
* Add an optional arguments to string-trimJean-Christophe Helary2017-05-191-9/+15
| | | | | | * lisp/emacs-lisp/subr-x.el (string-trim-left, string-trim-right) (string-trim): Add optional args that serve as defaults per the original behavior. (Bug#26908)
* autoload-rubric no longer provides a feature by defaultGlenn Morris2017-05-171-14/+10
| | | | | | * lisp/emacs-lisp/autoload.el (autoload-rubric): Stop providing a feature unless explicitly requested. (autoload-find-generated-file): Update autoload-rubric call.
* Make sure indent-sexp stops at end of sexp (Bug#26878)Noam Postavsky2017-05-151-15/+18
| | | | | | | * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Check endpos before indenting. * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-stop): New test.
* Make edebug-step-in work on generic methods (Bug#22294)Gemini Lasswell2017-05-143-15/+46
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/edebug.el (edebug-match-cl-generic-method-args): New function to implement the edebug-form-spec property of the symbol cl-generic-method-args. (edebug-instrument-function): If the function is a generic function, find and instrument all of its methods. Return a list instead of a single symbol. (edebug-instrument-callee): Now returns a list. Update docstring. (edebug-step-in): Handle the list returned by edebug-instrument-callee. * lisp/emacs-lisp/cl-generic.el (cl-defmethod): Use name and cl-generic-method-args in its Edebug spec. * lisp/emacs-lisp/eieio-compat.el (defmethod): Use name and cl-generic-method-args in its Edebug spec. * lisp/subr.el (method-files): New function. * test/lisp/subr-tests.el (subr-tests--method-files--finds-methods) (subr-tests--method-files--nonexistent-methods): New tests.
* Merge branch 'fix/bug-21072'Marcin Borkowski2017-05-141-38/+98
|\
| * Modify `beginning-of-defun-comments'Noam Postavsky2017-05-121-8/+16
| | | | | | | | | | * lisp/emacs-lisp/lisp.el (beginning-of-defun-comments): Try not to stop in the middle of a multiline comment.
| * * lisp/emacs-lisp/lisp.el (mark-defun): Simplify moving the point.Noam Postavsky2017-05-121-7/+3
| |
| * Fix Bug#21072 and rework `mark-defun'Marcin Borkowski2017-05-121-38/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * test/lisp/progmodes/elisp-mode-tests.el (mark-defun-test-buffer): New variable (mark-defun-no-arg-region-inactive) (mark-defun-no-arg-region-active) (mark-defun-arg-region-active) (mark-defun-pos-arg-region-inactive) (mark-defun-neg-arg-region-inactive, mark-defun-bob): Add tests for the new `mark-defun'. * lisp/emacs-lisp/lisp.el (beginning-of-defun--in-emptyish-line-p): New function. (beginning-of-defun-comments): New function. (mark-defun): Fix bug#21072, also rewrite large parts of `mark-defun' to accept a numerical prefix argument.
* | ; Revert "Adjust the edebug spec of if-let*"Mark Oteiza2017-05-131-2/+1
| | | | | | | | This reverts commit fd4b83ca7c20a68060772ec13aadbe29db612b3f.
* | Make `old-style-backquotes' variable internalPhilipp2017-05-131-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | * src/lread.c (load_warn_old_style_backquotes, Fload, read1) (syms_of_lread): Rename `old-style-backquotes' to `lread--old-style-backquotes', and clarify that it's for internal use only. * lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Rename variable. * test/src/lread-tests.el (lread-tests--old-style-backquotes): Add unit test. * emacs-lisp/bytecomp-tests.el (bytecomp-tests--old-style-backquotes): Add unit test.
* | Improve unescaped character literal warningsPhilipp Stephani2017-05-131-1/+1
| | | | | | | | | | | | | | | | | | | | | | * src/lread.c (load_warn_unescaped_character_literals) (syms_of_lread): lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Improve formatting of unescaped character literal warnings. * test/src/lread-tests.el (lread-tests--unescaped-char-literals): test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--unescaped-char-literals): Adapt unit tests.
* | Fix lisp-indent-region and indent-sexp (Bug#26619)Noam Postavsky2017-05-091-85/+91
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The new lisp-indent-region introduced in 2017-04-22 "Add new `lisp-indent-region' that doesn't reparse the code." is broken because it doesn't save the calculated indent amounts for already seen sexp depths. Fix this by unifying the indent-sexp and lisp-indent-region code. Furthermore, only preserve position 2 of the running parse when the depth doesn't change. * lisp/emacs-lisp/lisp-mode.el (lisp-ppss): Use an OLDSTATE that corresponds with the start point when calling parse-partial-sexp. (lisp-indent-state): New struct. (lisp-indent-calc-next): New function, extracted from indent-sexp. (indent-sexp, lisp-indent-region): Use it. (lisp-indent-line): Take indentation, instead of parse state. * test/lisp/emacs-lisp/lisp-mode-tests.el (lisp-mode-tests--correctly-indented-sexp): New constant. (lisp-indent-region, lisp-indent-region-defun-with-docstring): (lisp-indent-region-open-paren, lisp-indent-region-in-sexp): New tests.
* | Don't duplicate autoload code in package.elGlenn Morris2017-05-092-27/+23
| | | | | | | | | | | | * lisp/emacs-lisp/autoload.el (autoload-rubric): Add a package option. * lisp/emacs-lisp/package.el (autoload-rubric): Declare. (package-autoload-ensure-default-file): Use autoload-rubric.
* | Remove obsolete method of changing byte-compile-dest-fileGlenn Morris2017-05-061-14/+9
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-dest-file): Define unconditionally.
* | Write autoloads file atomicallyGlenn Morris2017-05-061-4/+18
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/autoload.el (autoload--save-buffer): New function, to save buffer atomically. (autoload-save-buffers, update-directory-autoloads): Use autoload--save-buffer. * lisp/Makefile.in ($(lisp)/loaddefs.el): No longer write to a temp file by hand.
* | Write autoloads file once onlyGlenn Morris2017-05-061-26/+13
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/autoload.el (autoload-find-generated-file): Simplify. Don't bother about ensuring the output file exists. (autoload-generated-file): Add doc. (autoload-ensure-writable): Update doc. (autoload-ensure-file-writeable): Handle non-existing file. (autoload-ensure-default-file): Remove function.
* | Fontify the doc-string in some CL forms as suchGlenn Morris2017-05-041-0/+3
| | | | | | | | | | * lisp/emacs-lisp/lisp-mode.el (defconstant, defparameter): Add the doc-string-elt property. (Bug#26778)
* | * lisp/emacs-lisp/cl-lib.el (cl-mapcar): Remove recent autoload cookie.Glenn Morris2017-05-041-1/+0
| |
* | cl-defmethod: Make the edebug spec more technically correctDmitry Gutov2017-05-051-2/+3
| | | | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl-defmethod): Denote the edebug spec part for qualifiers as [&rest atom], per http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00053.html.
* | Inherit incompatible/obsolete package faces from errorTino Calancha2017-05-041-1/+1
| | | | | | | | | | | | Don't use the same face for installed packages as for incompatible or obsolete ones. * lisp/emacs-lisp/package.el (package-status-incompat): Inherit from error.
* | * lisp/emacs-lisp/seq.el: Bump seq version.Nicolas Petton2017-05-041-1/+1
| |
* | Add seq-set-equal-p to test for set equalityDamien Cassou2017-05-041-0/+6
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/seq.el (seq-set-equal-p): Add function to compare two lists as if they were sets. * test/lisp/emacs-lisp/seq-tests.el (test-seq-set-equal-p): Add test for seq-set-equal-p.
* | Fix Edebug specs for 'cl-defmethod' and 'defmethod'Gemini Lasswell2017-05-022-5/+6
| | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-generic.el (cl-defmethod): Change Edebug spec to make Edebug generate a new symbol for each method (Bug#24753) and to support a string following :extra (Bug#23995). * lisp/emacs-lisp/eieio-compat.el (defmethod): Change Edebug spec to make Edebug generate a new symbol for each method (Bug#24753).
* | Warn about missing backslashes during loadPhilipp Stephani2017-05-011-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * src/lread.c (load_warn_unescaped_character_literals, Fload, read1) (syms_of_lread): Warn if unescaped character literals are found (Bug#20152). * lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Check for unescaped character literals during byte compilation. * test/src/lread-tests.el (lread-tests--unescaped-char-literals): New unit test. (lread-tests--with-temp-file, lread-tests--last-message): Helper functions for unit test. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--unescaped-char-literals): New unit test. * test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--with-temp-file): Helper macro for unit test.
* | Don't require bytecomp for running ert testsNoam Postavsky2017-04-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | "Fix ert-tests when running compiled" 2016-12-06 accidentally introduced a dependency on `bytecomp' into `ert'. As mentioned in "Avoid ert test failures" 2017-04-18, the accidental dependency of ert on bytecomp was masked by loading other libraries until recently. * lisp/emacs-lisp/ert.el (ert--expand-should-1): Only use `byte-compile-macro-environment' if it's bound. * test/src/eval-tests.el: Add defvar for dynamic variable `byte-compile-debug'.
* | Add new `lisp-indent-region' that doesn't reparse the code.Noam Postavsky2017-04-221-4/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both `lisp-indent-region' and `lisp-indent-line' now use `syntax-ppss' to get initial state, so they will no longer indent string literal contents. * lisp/emacs-lisp/lisp-mode.el (lisp-ppss): New function, like `syntax-ppss', but with a more dependable item 2. (lisp-indent-region): New function, like `indent-region-line-by-line' but additionally keep a running parse state to avoid reparsing the code repeatedly. Use `lisp-ppss' to get initial state. (lisp-indent-line): Take optional PARSE-STATE argument, pass it to `calculate-lisp-indent', use `lisp-ppss' if not given. (lisp-mode-variables): Set `indent-region-function' to `lisp-indent-region'.
* | Remove ignored argument from lisp-indent-lineNoam Postavsky2017-04-221-13/+7
| | | | | | | | | | | | | | * lisp/emacs-lisp/lisp-mode.el (lisp-indent-line): Remove WHOLE-EXP argument, the behavior has long since been handled in `indent-for-tab-command'. Also remove redundant `beg' and `shift-amt' variables and use `indent-line-to'.
* | * lisp/emacs-lisp/lisp-mode.el (indent-sexp): Clean up marker.Noam Postavsky2017-04-221-7/+9
| |
* | Don't reparse the sexp in indent-sexp (Bug#25122)Noam Postavsky2017-04-221-37/+39
| | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/lisp-mode.el (calculate-lisp-indent): Let PARSE-START be a parse state that can be reused. (indent-sexp): Pass the running parse state to calculate-lisp-indent instead of the sexp beginning position. Saving the CONTAINING-SEXP-START returned by `calculate-lisp-indent' is no longer needed. Don't bother stopping if we don't descend below init-depth, since we now alway scan the whole buffer (via syntax-ppss) anyway. * test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp): Add blank line to test case.
* | b-c--cond-jump-table-info: Use correct body for singleton clausesVibhav Pant2017-04-221-2/+2
| | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-cond-jump-table-info): When a clause's body consists of a single constant expression, use that expression as the body to be compiled. This fixes switch bytecode evaluating to nil to such clauses.
* | Improve prefix handling for dash.elStefan Monnier2017-04-211-1/+2
| | | | | | | | | | * lisp/emacs-lisp/autoload.el (autoload--make-defs-autoload): Don't drop dash's "-<letter>" prefixes.
* | * lisp/emacs-lisp/cl-macs.el: Fix symbol-macroletStefan Monnier2017-04-211-4/+13
|/ | | | | | | | | Revert 0d112c00ba0ec14bd3014efcd3430b9ddcfe1fc1 (to fix bug#26325) and use a different fix for bug#26068. (cl--symbol-macro-key): New function. (cl--sm-macroexpand, cl-symbol-macrolet): Use it instead of `symbol-name`. * test/lisp/emacs-lisp/cl-lib-tests.el (cl-lib-symbol-macrolet): Failure is not expected any more.
* bytecomp: Don't inline functions that use byte-switch (Bug#26518)Vibhav Pant2017-04-201-40/+46
| | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-unfold-bcf): Don't inline FORM if the bytecode uses the byte-switch instruction. It is impossible to guess the correct stack depth while inlining such bytecode, resulting in faulty code.
* Don't register "def" as an autoload prefix (Bug#26412)Noam Postavsky2017-04-191-1/+3
| | | | | * lisp/emacs-lisp/autoload.el (autoload--make-defs-autoload): Don't accept "def" as a prefix.
* Remove some explicit runtime loads of pcaseGlenn Morris2017-04-193-3/+0
| | | | | | | | Pcase is macros, so these should have used eval-when-compile. Anyway, pcase entry points are autoloaded, so the compiler handles it. * lisp/profiler.el, lisp/emacs-lisp/eieio-core.el: * lisp/emacs-lisp/generator.el, lisp/emacs-lisp/subr-x.el: * lisp/progmodes/xref.el: No need to require pcase.
* Stop cl-lib loading pcase at runtimeGlenn Morris2017-04-191-1/+2
| | | | | | The cause was an unexpanded pcase-defmacro in cl-loaddefs. * lisp/emacs-lisp/autoload.el (make-autoload): Treat pcase-defmacro like defmacro.
* Tweak bytecomp's loading of cl-extraGlenn Morris2017-04-181-2/+4
| | | | | * lisp/emacs-lisp/bytecomp.el: Don't force load of cl-extra in a post-bootstrap emacs where cl-loaddefs does exist.
* Avoid unnecessary loading of subr-x at run-timeGlenn Morris2017-04-182-1/+4
| | | | | | | | | | * lisp/doc-view.el, lisp/filenotify.el, lisp/info-look.el: * lisp/svg.el, lisp/emacs-lisp/byte-opt.el, lisp/net/shr.el: * lisp/textmodes/sgml-mode.el, test/lisp/dom-tests.el: No need to load subr-x at run-time. * lisp/gnus/nnheader.el: No need to load subr-x. ; * lisp/emacs-lisp/subr-x.el, lisp/gnus/message.el, lisp/net/nsm.el: ; Comments.
* Avoid ert test failuresGlenn Morris2017-04-181-0/+1
| | | | | | | * lisp/emacs-lisp/ert.el (ert--expand-should-1): Avoid errors related to undefined byte-compile-macro-environment. Somehow masked until very recently because loading seq (eg) loads bytecomp. http://hydra.nixos.org/build/51730765
* Fix find-library-name for load-history entries with nil FILE-NAME (Bug#26355)Noam Postavsky2017-04-181-35/+13
| | | | | | | * lisp/emacs-lisp/find-func.el (find-library--from-load-history): Rename from find-library--from-load-path. Check for `load-history' entries with nil FILE-NAMEs. Simplify by not double checking for suffixes and making use of `locate-file'.
* Use user-error for some ert.el errorsGlenn Morris2017-04-131-6/+6
| | | | | | * lisp/emacs-lisp/ert.el (ert-read-test-name, ert-delete-all-tests) (ert-results-find-test-at-point-other-window, ert-describe-test): Use user-error.
* Remove duplicate lisp-eval-defun definitionGlenn Morris2017-04-131-5/+1
| | | | | * lisp/emacs-lisp/lisp-mode.el (lisp-eval-defun): Autoload rather than defining a stub.