Commit graph

5480 commits

Author SHA1 Message Date
Noam Postavsky
2860285621 Allow macros autoloaded as functions during bytecomp (Bug#36022)
* lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't pass
symbols which don't have a known definition to
byte-compile--function-signature, it fails to compile code which
previously compiled successfully (for example, gnus.el until
2019-06-01 "* lisp/gnus/gnus.el: Mark autoloaded macros as such" which
autoloads some macros as if they were functions).
2019-06-01 17:48:43 -04:00
Stefan Monnier
b3df372959 * lisp/emacs-lisp/package.el: Obey buffer-file-coding-system (bug#35739)
`url-insert-file-contents` saves in buffer-file-coding-system
the coding-system used to decode the contents.  Preserve this
as the contents is moved from buffer to string to buffer, and use
it when saving the contents to file, so as to try and better preserve
the original byte sequence.

(package--buffer-string, package--cs): New functions.
(package--check-signature): Encode `string` if a coding-system
was specified in buffer-file-coding-system.
(package--download-one-archive, package-install-from-archive):
Obey and preserve the buffer-file-coding-system if specified.

Do not merge.
2019-05-31 00:54:05 -04:00
Noam Postavsky
134edc1036 Warn about wrong number of args for subrs (Bug#35767)
* lisp/emacs-lisp/bytecomp.el (byte-compile-callargs-warn): Don't
assume byte-compile-fdefinition will return non-nil.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-warn-wrong-args)
(bytecomp-warn-wrong-args-subr): New tests.
2019-05-30 18:46:07 -04:00
Noam Postavsky
5f01af6c8e Use plain symbols for eieio type descriptors (Bug#29220)
Since Emacs 26, eieio objects use a class record (with circular
references) as the type descriptor of the object record.  This causes
problems when reading back an object from a string, because the class
record is not `eq' to the canonical one (which means that read objects
don't satisfy the foo-p predicate).
* lisp/emacs-lisp/eieio.el (make-instance): As a (partial) fix, set
the record's type descriptor to a plain symbol for the type descriptor
when eieio-backward-compatibility is non-nil (the default).
* lisp/emacs-lisp/eieio-core.el (eieio--object-class): Call
eieio--class-object on the type tag when eieio-backward-compatibility
is non-nil.
(eieio-object-p): Use eieio--object-class instead of
eieio--object-class-tag.
* test/lisp/emacs-lisp/eieio-tests/eieio-test-persist.el
(eieio-test-persist-hash-and-vector)
(eieio-test-persist-interior-lists): Make into functions.
(eieio-persist-hash-and-vector-backward-compatibility)
(eieio-persist-hash-and-vector-no-backward-compatibility)
(eieio-test-persist-interior-lists-backward-compatibility)
(eieio-test-persist-interior-lists-no-backward-compatibility): New
tests which call them, eieio-backward-compatibility let-bound.
2019-05-30 18:46:07 -04:00
Noam Postavsky
c4d4dcf17e Avoid infloop in read-multiple-choice (Bug#32257)
* lisp/emacs-lisp/rmc.el (read-multiple-choice): When `read-char'
signals an error "Non-character input-event", call `read-event' to
take the non-character event out of the queue.  Don't merge to master,
we just use `read-event' directly there, rather than this solution
which relies a particular error message.
2019-05-26 08:46:30 -04:00
Vitalie Spinu
1c6484e975 Fix incorrect cloning of eieio-instance-inheritor objects (Bug#34840)
* lisp/emacs-lisp/eieio-base.el (clone): Unbound slots of
  eieio-instance-inheritor objects as documented in the docs string
  and implemented in the original eieio implementation.
2019-05-08 11:12:29 +02:00
Vitalie Spinu
37436fe6d3 Fix cloning of eieio-named objects (Bug#22840)
* lisp/emacs-lisp/eieio-base.el (clone): Correctly set the name of the
  cloned objects from eieio-named instances.
2019-05-07 13:45:00 +02:00
Noam Postavsky
93912baefd Be more careful about indent-sexp going over eol (Bug#35286)
* lisp/emacs-lisp/lisp-mode.el (indent-sexp): Only go over multiple
sexps if the end of line is within a sexp.
* test/lisp/emacs-lisp/lisp-mode-tests.el
(indent-sexp-stop-before-eol-comment)
(indent-sexp-stop-before-eol-non-lisp): New tests.
2019-04-22 12:49:36 -04:00
Eli Zaretskii
5ed05fbf62 Fix downloading updates for packages with non-ASCII descriptions
* lisp/emacs-lisp/package.el (package--download-one-archive):
Make sure archive contents are written using UTF-8 encoding.
(Bug#34909)
(list-packages): Set buffer's encoding to UTF-8.
2019-03-19 13:16:50 +02:00
Eli Zaretskii
3707ea434f Fix a typo in the doc string of 'regex-opt'
* lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix example in
the doc string.  (Bug#34596)
2019-02-22 10:12:14 +02:00
David Pathakjee
5dc4e51e51 * lisp/emacs-lisp/debug.el (debug-on-variable-change): Doc fix. (Bug#34518)
Copyright-paperwork-exempt: yes
2019-02-18 19:13:04 +02:00
Paul Eggert
2fcf2dff00 Fix copyright years by hand
These are dates that admin/update-copyright did not update, or
updated incorrectly.
2019-01-01 01:02:40 +00:00
Paul Eggert
26bed8ba10 Update copyright year to 2019
Run 'TZ=UTC0 admin/update-copyright $(git ls-files)'.
2019-01-01 01:01:13 +00:00
Paul Eggert
f4ea746451 cl-make-random-state was not copying its arg
Problem reported by Xu Chunyang (Bug#33731).
* lisp/emacs-lisp/cl-extra.el (cl-make-random-state):
Use copy-sequence, not copy-tree, so that the record is copied.
* test/lisp/emacs-lisp/cl-extra-tests.el:
(cl-extra-test-cl-make-random-state): New test.
2018-12-19 13:42:47 -08:00
Stefan Monnier
b0ed9d1433 * lisp/emacs-lisp/cursor-sensor.el: Add motivation 2018-12-09 20:56:35 -05:00
Stefan Monnier
505ac9a0b1 Improve documentation of cursor-sensor.el (bug#33664)
* doc/lispref/text.texi (Special Properties): Mention cursor-sensor-inhibit.
* lisp/emacs-lisp/cursor-sensor.el (Commentary): Add cursor-sensor-mode.
(cursor-sensor-inhibit): Add docstring.
2018-12-09 08:59:20 -05:00
Glenn Morris
8fa0d9679d * lisp/emacs-lisp/subr-x.el (if-let, when-let): Doc fix: active voice. 2018-12-01 17:21:29 -08:00
Eli Zaretskii
74a3a795af Fix a typo in a doc string
* lisp/emacs-lisp/map-ynp.el (read-answer-short): Fix typo.
(Bug#33528)
2018-11-28 09:28:36 +02:00
Glenn Morris
5f3926053e * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Pass format to message. 2018-11-27 08:24:33 -08:00
Eli Zaretskii
03bb7a8da9 Avoid clearing echo-area message by auto-save-visited-file-name
* lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Record the
previous echo-area message, if any, and restore it before
exiting.  (Bug#33490)
2018-11-26 19:27:45 +02:00
Stephen Berman
d667318a7f Fix two Edebug defcustoms (bug#33428)
* lisp/emacs-lisp/edebug.el (edebug-print-length)
(edebug-print-level): Fix customization type to allow setting
the documented valid value nil via the Customize interface.
2018-11-19 23:12:52 +01:00
Paul Eggert
a306d03974 Fix tempfile creation when byte compiling
This improves on the recent fix for master failing to build
on FreeBSD.  Suggested by Stefan Monnier in:
https://lists.gnu.org/r/emacs-devel/2018-01/msg00600.html
* lisp/emacs-lisp/bytecomp.el (byte-compile-file):
Put tempfile next to the target file, as was the original intent.

(cherry picked from commit 64c8467386)
2018-11-15 16:45:36 +02:00
Eli Zaretskii
e824c914da Improve documentation of destructuring-binding macros
* lisp/emacs-lisp/pcase.el (pcase-dolist, pcase-let)
(pcase-let*): Improve the doc strings.

* doc/lispref/sequences.texi (Sequence Functions): Improve
wording and rename arguments of seq-let to be more
descriptive.  Add a cross-reference to "Destructuring with
pcase Patterns".
* doc/lispref/control.texi (Pattern-Matching Conditional):
Improve wording and the menu.
(pcase Macro): Incorporate patch suggested by Paul Eggert
<eggert@cs.ucla.edu>.  Reformat text.
(Destructuring with pcase Patterns): Rename from
"Destructuring patterns", and improve wording and indexing.
2018-11-03 15:11:33 +02:00
Eric Abrahamsen
97660fa9d6 Doc fix for checkdoc-continue
* lisp/emacs-lisp/checkdoc.el (checkdoc-continue): There is no second
  optional argument, and the function always starts from point.
2018-11-01 13:21:27 -07:00
Eli Zaretskii
96f055bb4b Fix a typo in autoload.el
* lisp/emacs-lisp/autoload.el (update-directory-autoloads):
Remove stray backslashes.  (Bug#33231)
2018-11-01 20:56:31 +02:00
Stefan Monnier
eb903d8f20 * lisp/emacs-lisp/pcase.el: Improve docstrings. 2018-10-30 14:24:31 -04:00
Eli Zaretskii
86abbb3cb8 * lisp/emacs-lisp/rx.el (rx): Fix typo in doc string. (Bug#33205) 2018-10-30 19:25:14 +02:00
Noam Postavsky
92de44fa1f Don't error when indenting malformed Lisp (Bug#30891)
* lisp/emacs-lisp/lisp-mode.el (lisp-indent-calc-next): If we run out
of indent stack, reset the parse state.
2018-10-25 17:55:49 -04:00
Eric Abrahamsen
2cae1cf6f8 Further fix to eieio-persistent
* lisp/emacs-lisp/eieio-base.el (eieio-persistent-validate/fix-slot-value):
  Make handling of hash tables and vectors recursive. This is
  necessary because the write process, in `eieio-override-prin1' is
  also recursive. With any luck, this will be the last fix of its
  kind. If that's true, cherry-pick to Emacs 26.2 later on.
2018-10-04 12:10:58 -07:00
Tino Calancha
7296b6fbf2 Improve cl-do, cl-do* docstrings
* lisp/emacs-lisp/cl-macs.el(cl-do, cl-do*):
Improve docstring (Bug#32803).
2018-09-29 18:06:15 +09:00
Glenn Morris
d0d162c2d6 Small checkdoc quoting fix (bug#32546)
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Fix quoting thinko.
2018-08-27 18:27:01 -04:00
Yuri D'Elia
d2ad4ba4f3 Do not consider external packages to be removable (Bug#27822)
Packages which are not directly user-installed shouldn't be autoremoved,
since they can be setup through a different path (via
`package-directory-list') where we have no authority over.
* lisp/emacs-lisp/package.el (package--user-installed-p): New
function.
(package--removable-packages): Use it.
2018-08-11 21:06:26 -04:00
Juri Linkov
cc233365a9 New function read-answer (Bug#31782)
* lisp/emacs-lisp/map-ynp.el (read-answer-short): New defcustom.
(read-answer): New function.
* lisp/subr.el (assoc-delete-all): New function.
* etc/NEWS: Announce them.

* lisp/dired.el (dired-delete-file): Use read-answer.
(dired--yes-no-all-quit-help): Remove function.
(dired-delete-help): Remove defconst.

(backported from master, "New function read-answer (bug#30073)" and
"Respect non-saved value of `read-short-answer' (Bug#31782)")
2018-08-04 11:37:39 -04:00
Noam Postavsky
8579105393 Don't fail to indent-sexp before a full sexp (Bug#31984)
* lisp/emacs-lisp/lisp-mode.el (indent-sexp): Only signal error if the
initial forward-sexp fails.  Suppress scan-error forn any of the
forward-sexp calls after that.
* test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-cant-go): New
test.
2018-07-27 19:41:39 -04:00
Noam Postavsky
1b4b96597c Fix indent-sexp of #s(...) (Bug#31984)
* lisp/emacs-lisp/lisp-mode.el (indent-sexp): Look for a sexp that
ends after the current line.
* test/lisp/emacs-lisp/lisp-mode-tests.el (indent-sexp-go): New test.
2018-07-21 21:07:07 -04:00
Eli Zaretskii
3e722980df Improve documentation of 'pcase-defmacro rx'
* lisp/emacs-lisp/rx.el (rx): Clarify and improve the doc string.
For the details, see the discussion starting at
http://lists.gnu.org/archive/html/emacs-devel/2018-06/msg00399.html.
2018-07-20 11:44:36 +03:00
John Shahid
35e0305dc2 Avoid turning on the global-minor-mode recursively
* lisp/emacs-lisp/easy-mmode.el (define-globalized-minor-mode): Clear
the buffer-list inside MODE-enable-in-buffers to avoid enabling the
mode recursively.  (Bug#31793)
2018-07-10 08:13:39 -04:00
Noam Postavsky
8f7d35cabd Stop using indent-line-to in lisp-indent-line (Bug#32014)
This is partial revert of "Remove ignored argument from
lisp-indent-line", because `indent-line-to' doesn't respect field
boundaries.
* lisp/emacs-lisp/lisp-mode.el (lisp-indent-line): Use delete-region
and indent-to instead of `indent-line-to'.
* test/lisp/emacs-lisp/lisp-mode-tests.el
(lisp-indent-with-read-only-field): Expect to pass.

Don't merge to master, we will fix indent-line-to there instead.
2018-07-09 19:39:03 -04:00
Gemini Lasswell
4bd43b0352 Increase max-lisp-eval-depth adjustment while in debugger (bug#31919)
* src/eval.c (call_debugger): Increase the amount of extra Lisp
evaluation depth given to the debugger to allow it to call cl-print.
* lisp/emacs-lisp/debug.el (debugger-setup-buffer): Add a comment
to suggest updating call_debugger when changing print-level.
2018-06-30 07:36:11 -07:00
Noam Postavsky
6f6d525683 Detect a non-list package archive content properly (Bug#22311)
* lisp/emacs-lisp/package.el (package--download-one-archive): Use
`read' instead of `read-from-string'; the latter always returns a
cons, so the `listp' check on its return value doesn't make sense.  It
was changed from `read' to `read-from-string' in 2015-04-01 "*
emacs-lisp/package.el: Implement asynchronous refreshing", but that
change was not needed because `read' works fine on strings as well as
buffers.
2018-06-26 19:56:04 -04:00
Noam Postavsky
7488de4f27 * lisp/emacs-lisp/regexp-opt.el (regexp-opt): Fix docstring quotes. 2018-06-24 10:57:54 -04:00
Simen Heggestøyl
3d2e3dc1ca Change name of `seqp' argument (Bug#26411)
* lisp/emacs-lisp/seq.el (seqp): Change argument name.

* doc/lispref/sequences.texi: Update the documentation for seqp.
2018-06-21 20:27:35 -04:00
Noam Postavsky
e292c0973c Fix #'fun handling inside `labels' (Bug#31792)
* lisp/emacs-lisp/cl.el (labels): Apply the equivalent of the
cl-labels change from 2015-01-16 "* lisp/emacs-lisp/cl-macs.el: Fix
last change".
* test/lisp/emacs-lisp/cl-tests.el (labels-function-quoting): New
test.
* lisp/emacs-lisp/cl-macs.el (cl-flet, cl-labels): Improve docstring,
link to relevant manual page.
* doc/misc/cl.texi (Function Bindings): Don't imply that function
cells of symbols are modified by cl-flet.  Don't claim that cl-flet or
cl-labels affect references of the form (quote FUNC).
2018-06-19 20:02:16 -04:00
Paul Eggert
e1284341fd Fix byte compilation of (eq foo 'default)
Backport from master.
Do not use the symbol ‘default’ as a special marker.
Instead, use a value that cannot appear in the program,
improving on a patch proposed by Robert Cochran (Bug#31718#14).
* lisp/emacs-lisp/bytecomp.el (byte-compile--default-val):
New constant.
(byte-compile-cond-jump-table-info)
(byte-compile-cond-jump-table): Use it instead of 'default.
* test/lisp/emacs-lisp/bytecomp-tests.el:
(byte-opt-testsuite-arith-data): Add a test for the bug.
2018-06-16 09:44:05 -07:00
Gemini Lasswell
c6ef3c8321 Make cl-print respect print-quoted (bug#31649)
* lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Observe
print-quoted when printing quote and its relatives.  Add printing of
'function' as #'.
2018-06-07 08:27:43 -07:00
Gemini Lasswell
5d448ca98c Make cl-print respect print-level and print-length (bug#31559)
* lisp/emacs-lisp/cl-print.el (cl-print--depth): New variable.
(cl-print-object) <cons>: Print ellipsis if printing depth greater
than 'print-level' or length of list greater than 'print-length'.
(cl-print-object) <vector>: Truncate printing with ellipsis if
vector is longer than 'print-length'.
(cl-print-object) <cl-structure-object>: Truncate printing with
ellipsis if structure has more slots than 'print-length'.
(cl-print-object) <:around>: Bind 'cl-print--depth'.
* test/lisp/emacs-lisp/cl-print-tests.el
(cl-print-tests-3, cl-print-tests-4): New tests.

(cherry picked from commit 0f48d18fd2)
2018-06-04 08:57:10 -07:00
Eli Zaretskii
16e8541b74 Update doc string of 'rx'
* lisp/emacs-lisp/rx.el (rx): Update the description of some
character classes.
2018-06-03 20:20:52 +03:00
Noam Postavsky
9552485c4d Fix cl-print for circular sublists (Bug#31146)
* lisp/emacs-lisp/cl-print.el (cl-print-object) <cons>: Push each
element of list being printed onto cl-print--currently-printing.
* test/lisp/emacs-lisp/cl-print-tests.el (cl-print-circle-2): New
test.

(cherry picked from commit b8aa7ecf54)
2018-06-03 12:48:13 -04:00
Damien Cassou
24ba63314f Improve read-multiple-choice docstring (Bug#31628)
* lisp/emacs-lisp/rmc.el (read-multiple-choice): Improve docstring.
2018-05-29 08:17:32 -04:00
Thien-Thi Nguyen
567cb9046d Overhaul pcase documentation
Suggested by Drew Adams (Bug#31311).

* doc/lispref/control.texi (Control Structures):
Add "Pattern-Matching Conditional" to menu, before "Iteration".
(Conditionals): Delete menu.
(Pattern matching case statement): Delete node/subsection,
by actually moving, renaming, and overhauling it to...
(Pattern-Matching Conditional): ...new node/section.
(pcase Macro): New node/subsection.
(Extending pcase): Likewise.
(Backquote Patterns): Likewise.
* doc/lispref/elisp.texi (Top) In @detailmenu, add
"Pattern-Matching Conditional" under "Control Structures"
section and delete "Conditionals" section.
* lisp/emacs-lisp/pcase.el (pcase): Rewrite docstring.
(pcase-defmacro \` (qpat) ...): Likewise.
2018-05-27 17:14:27 +02:00