summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
* Split variable macro env from function envNoam Postavsky2017-06-071-36/+28
| | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl--sm-macroexpand): Remove. (cl-symbol-macrolet): Instead of adding each binding directly into the main environment with a special key format, put all symbol macro bindings into a single entry in the main environment under `:cl-symbol-macros'. (cl--sm-macroexpand): Look up symbol bindings in the `:cl-symbol-macros' entry of the environment.
* Enable ElDoc messages after the newline commandDmitry Gutov2017-06-061-1/+1
| | | | | * lisp/emacs-lisp/eldoc.el: Add "newline" to the eldoc-add-command-completions call (bug#27228).
* Fix check for package-unsigned-archives during retrievalAndy Moreton2017-06-061-1/+1
| | | | | * lisp/emacs-lisp/package.el (package--download-one-archive): Fix check for package-unsigned-archives.
* Implement field numbers in format stringsPhilipp Stephani2017-06-021-3/+8
| | | | | | | | | | | | | | | A field number explicitly specifies the argument to be formatted. This is especially important for potential localization work, since grammars of various languages dictate different word orders. * src/editfns.c (Fformat): Update documentation. (styled_format): Implement field numbers. * doc/lispref/strings.texi (Formatting Strings): Document field numbers. * lisp/emacs-lisp/bytecomp.el (byte-compile-format-warn): Adapt. * test/src/editfns-tests.el (format-with-field): New unit test.
* cl-print: handle circular objects when `print-circle' is nil (Bug#27117)Noam Postavsky2017-05-311-11/+24
| | | | | | | | * lisp/emacs-lisp/cl-print.el (cl-print--currently-printing): New variable. (cl-print-object): When `print-circle' is nil, bind it to a list of objects that are currently printing to avoid printing the same object endlessly. * test/lisp/emacs-lisp/cl-print-tests.el (cl-print-circle): New test.
* Extract eldoc--supported-pDmitry Gutov2017-05-311-2/+5
| | | | | | * lisp/emacs-lisp/eldoc.el (eldoc--supported-p): New function. (turn-on-eldoc-mode, eldoc-mode): Use it. (http://lists.gnu.org/archive/html/emacs-devel/2017-05/msg00865.html)
* Turn global-eldoc-mode into a globalized minor modeDmitry Gutov2017-05-301-20/+9
| | | | | | | * lisp/emacs-lisp/eldoc.el (global-eldoc-mode): Turn into globalized mode (bug#19853). (turn-on-eldoc-mode): Make it into a wrapper instead of alias. (eldoc-mode): Only show the message when called interactively.
* Fix cl-indent for `loop' with :keywords (Bug#15543)Svante Carl v. Erichsen2017-05-271-1/+1
| | | | | | | * lisp/emacs-lisp/cl-indent.el (lisp-extended-loop-p): Allow for ":keywords". Copyright-paperwork-exempt: yes
* Don't attempt to recover from undefined behavior in some casesPhilipp Stephani2017-05-272-0/+18
| | | | | | | | | | | | | These functions can only be run in batch mode and exit Emacs on return, so nothing can be recovered. Disable unsafe recover mechanisms so that we get real failures and good stack traces on fatal signals. * lisp/emacs-lisp/bytecomp.el (batch-byte-compile) (batch-byte-recompile-directory): * lisp/emacs-lisp/ert.el (ert-run-tests-batch-and-exit) (ert-summarize-tests-batch-and-exit): Don't attempt to recover from undefined behavior.
* * lisp/emacs-lisp/eieio.el (defclass): Fix quote in warning message.Noam Postavsky2017-05-261-1/+1
|
* 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.