Commit graph

5826 commits

Author SHA1 Message Date
Dario Gjorgjevski
dec148939a Do not use syntax-ppss-table in syntax-propertize when nil (Bug#36095)
* lisp/emacs-lisp/syntax.el (syntax-propertize): Use (syntax-table)
instead of syntax-ppss-table when the latter is nil.
2019-06-05 07:29:23 -04:00
Stefan Monnier
0b3982b1a3 * lisp/emacs-lisp/syntax.el: Use syntax-ppss-table for syntax-propertize.
`syntax-ppss` uses `syntax-ppss-table` while parsing the buffer as well
as when it calls `syntax-propertize`, but `syntax-propertize` can also
be called directly rather than via `syntax-ppss` so it needs to explicitly
use `syntax-ppss-table` as well in order to avoid using sometimes one
table and sometimes another.

(syntax-ppss-table): Move before new use.
(syntax-propertize): Use it.
2019-06-04 21:48:06 -04:00
Stefan Monnier
f4d3253831 * lisp/emacs-lisp/thunk.el (thunk-delay): Fix memory leak
Get rid of references to the free variables of `body` once the thunk has
been forced (bug#30626).
2019-06-04 12:55:53 -04:00
Paul Eggert
741d04a879 Adjust comments/debug to match C bignum code
* doc/lispintro/emacs-lisp-intro.texi (Digression into C):
Adjust to match current C code.
* lisp/emacs-lisp/ert.el (ert--force-message-log-buffer-truncation):
Simplify.
* src/.gdbinit (Lisp_Object_Printer.to_string): Return
a string that says "make_fixnum", not "make_number".
2019-06-04 08:34:16 -07:00
Paul Eggert
bee3cc604d Tune cl-assoc
* lisp/emacs-lisp/cl-seq.el (cl-assoc):	Use assq for fixnums.
2019-06-01 18:13:00 -07:00
Mattias Engdegård
b5e41e8ba3 Fix cl-member' and cl-assoc' for bignums
* lisp/emacs-lisp/cl-seq.el (cl-member, cl-assoc): Work with bignums.
* test/lisp/emacs-lisp/cl-seq-tests.el (cl-seq-bignum-eql): New.
2019-06-01 18:13:00 -07:00
Glenn Morris
7e911d007d Merge from origin/emacs-26
134edc1 Warn about wrong number of args for subrs (Bug#35767)
5f01af6 Use plain symbols for eieio type descriptors (Bug#29220)
4b24b01 Pacify GCC 9 -Wredundant-decls
2019-06-01 12:04:42 -07: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
Stefan Monnier
fe0cb43fb8 * lisp/subr.el (add-hook): Turn append into depth (bug#35508)
Make it possible to control the relative ordering of functions on hooks by
specifying `depth` in the same was as was possible with `add-function`.

* lisp/electric.el (electric--sort-post-self-insertion-hook):
Delete function.
(electric-indent-mode, electric-layout-mode, electric-quote-mode):
* lisp/elec-pair.el (electric-pair-mode): Use new `depth` arg instead of
electric--sort-post-self-insertion-hook.

* lisp/emacs-lisp/syntax.el (syntax-propertize, syntax-ppss):
Use new `depth` arg to make sure noone accidentally gets added
after syntax-ppss-flush-cache.

* doc/lispref/modes.texi (Setting Hooks): Document new `depth` arg.

* test/lisp/subr-tests.el (subr-tests-add-hook-depth): New test.
2019-05-29 15:56:14 -04:00
Mattias Engdegård
68b374a62d Correctly eliminate duplicate cases in switch compilation
Fix code mistakes that prevented the correct elimination of duplicated
cases when compiling a `cond' form to a switch bytecode, as in

  (cond ((eq x 'a) 1)
        ((eq x 'b) 2)
        ((eq x 'a) 3)   ; should be elided
        ((eq x 'c) 4))

Sometimes, this caused the bytecode to use the wrong branch (bug#35770).

* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-vars): Return obj2 eval'ed.
(byte-compile-cond-jump-table-info):
Discard redundant condition.  Use `obj2' as evaluated.
Discard duplicated cases instead of failing the table generation.
* test/lisp/emacs-lisp/bytecomp-tests.el (toplevel): Require subr-x.
(byte-opt-testsuite-arith-data, bytecomp-test--switch-duplicates): Test.
2019-05-27 13:25:27 +02: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
Noam Postavsky
3f03f6284a Avoid infloop in read-multiple-choice (Bug#32257)
* lisp/emacs-lisp/rmc.el (read-multiple-choice): Use `read-event'
which won't get stuck (return the same event over and over again) for
non-character events, unlike `read-char'.
2019-05-26 08:16:23 -04:00
Paul Eggert
852d281769 Update author/maintainer info
Update email addresses and fix spellings of some author and
maintainer names.
2019-05-26 01:00:16 -07:00
Paul Eggert
797ee5871e Remove Maintainer: when it duplicates Author:
The convention is that a file with Author: but not Maintainer:
means the author is a maintainer, which makes it confusing
when a file lists the same person as author and maintainer.
Avoid the confusion by removing the duplicate Maintainer: line.
2019-05-26 01:00:15 -07:00
Paul Eggert
f744797af1 Go back to "Maintainer: emacs-devel@gnu.org"
Restore lines saying "Maintainer: emacs-devel@gnu.org" when there is
no special maintainer for a file.  Although this wasn't documented
it was common practice and removing the lines didn't have consensus.
2019-05-25 14:25:18 -07:00
Stefan Monnier
35f305652c * lisp/emacs-lisp/package.el (package-install-from-archive): Fix last change
Don't place the unibyte content of of the downloaded file into
a multibyte buffer.
2019-05-24 12:26:40 -04:00
Michael Heerdegen
a564d6e8bb * lisp/emacs-lisp/cl-macs.el (cl-callf): Tweak in docstring
Say that lambdas are also allowed as FUNC argument.
2019-05-24 00:51:46 +02:00
Mattias Engdegård
afdc20d73c Allow zero-argument rx or' and seq' forms
Make the rx `or' and `seq' forms accept zero arguments to produce a
never-matching regexp and an empty string, respectively.

* lisp/emacs-lisp/rx.el: Require cl-extra.
(rx-constituents, rx-or): Permit zero args.
(rx): Amend doc string for `or' and `seq'.
* test/lisp/emacs-lisp/rx-tests.el (rx-or, rx-seq): Test the change.
* etc/NEWS (Changes in Specialized Modes and Packages): Mention the change.
2019-05-20 17:56:40 +02:00
Mattias Engdegård
c2cda3ff40 Revert "Allow zero-argument rx or' and seq' forms"
This reverts commit b552fc05c2.
It caused a bootstrapping failure which I have yet to resolve - sorry.
2019-05-20 17:38:03 +02:00
Mattias Engdegård
b552fc05c2 Allow zero-argument rx or' and seq' forms
Make the rx `or' and `seq' forms accept zero arguments to produce a
never-matching regexp and an empty string, respectively.

* lisp/emacs-lisp/rx.el (rx-constituents, rx-or): Permit zero args.
(rx): Amend doc string for `or' and `seq'.
* test/lisp/emacs-lisp/rx-tests.el (rx-or, rx-seq): Test the change.
* etc/NEWS (Changes in Specialized Modes and Packages): Mention the change.
2019-05-20 11:39:46 +02:00
Paul Eggert
bef1be8730 Fixes for "Maintainer:" and related lines
Mostly, this just removes "Maintainer: emacs-devel@gnu.org" lines,
which are not that useful.  It also cleans up and regularizes a
few similar lines.
2019-05-19 21:34:27 -07:00
Lars Ingebrigtsen
1b2b136a17 cus-edit.el: Remove XEmacs compat code
* lisp/cus-edit.el (custom-browse-insert-prefix): Remove XEmacs
compat code and make obsolete.
(custom-group-value-create): Use `insert' directly.

* lisp/emacs-lisp/elint.el (elint-check-conditional-form): Don't
refer to function that doesn't have an if any more.
2019-05-19 20:50:54 +02:00
Stefan Monnier
5f9671e57e * lisp/emacs-lisp/package.el: Fix decoding of downloaded files
This is a different fix for bug#34909, which should also fix bug#35739.

Our downloading code used to automatically decode the result according
to the usual heuristics for files.  This caused problems when we later
needed to save the data in a file that needed to be byte-for-byte
equal to the original in order to pass the signature verification,
especially because we didn't keep track of which coding-system was
used to decode the data.

(package--unless-error): New macro extracted from
package--with-response-buffer-1, so that we can specify edebug and
indent specs.
(package--with-response-buffer-1): Use it.  More importantly, change
code so it runs `body` in a unibyte buffer with undecoded data.
(package--download-one-archive): Don't encode with utf-8 since the data
is not decoded yet.
(describe-package-1): Explicitly decode the readem.txt files here.

* lisp/url/url-handlers.el (url-insert-file-contents): Use it.
(url-insert): Don't decode if buffer is unibyte.

* lisp/url/url-http.el (url-http--insert-file-helper): New function,
extracted from url-insert-file-contents.
2019-05-18 18:32:47 -04:00
Stefan Monnier
2a5705761e * lisp/emacs-lisp/package.el: Reduce macrology in ...with-response-buffer
(package--with-response-buffer-1): New function, extracted from
package--with-response-buffer.
(package--with-response-buffer): Use it.
2019-05-18 17:40:21 -04:00
Stefan Monnier
2e8f6ad287 * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Fix docstring of accessors. 2019-05-16 22:00:57 -04:00
Paul Pogonyshev
8d3fff6bd6 Make `package' not "uninhibit" messages (Bug#34037)
* lisp/emacs-lisp/package.el: Don't let-bind inhibit-message to a
different value if it was non-nil.
2019-05-16 20:08:27 -04:00
Stefan Monnier
37c41c6ef0 * lisp/emacs-lisp/cl-macs.el (cl--sm-macroexpand) <setq>: Rewrite
The previous code had 2 problems:
- It converted `setq` to `setf` in unrelated cases such as
  (cl-symbol-macrolet ((x 1)) (setq (car foo) bar))
- It macroexpanded places before `setf` had a chance to see if they
  have a gv-expander.
2019-05-16 15:29:36 -04:00
Mattias Engdegård
26f735ff19 Add standard unmatchable regexp
Add `regexp-unmatchable' as a standard unmatchable regexp, defined as
"\\`a\\`".  Use it where such a regexp is needed, replacing slower
expressions in several places.
From a suggestion by Philippe Schnoebelen.

* lisp/subr.el (regexp-unmatchable): New defconst.
* etc/NEWS (Lisp Changes): Mention `regexp-unmatchable'.
* doc/lispref/searching.texi (Regexp Functions): Document it.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt)
* lisp/progmodes/cc-defs.el (cc-conditional-require-after-load)
(c-make-keywords-re)
* lisp/progmodes/cc-engine.el (c-beginning-of-statement-1)
(c-forward-<>-arglist-recur, c-forward-decl-or-cast-1)
(c-looking-at-decl-block)
* lisp/progmodes/cc-fonts.el (c-doc-line-join-re)
(c-doc-bright-comment-start-re)
* lisp/progmodes/cc-langs.el (c-populate-syntax-table)
(c-assignment-op-regexp)
(c-block-comment-ender-regexp, c-font-lock-comment-end-skip)
(c-block-comment-start-regexp, c-line-comment-start-regexp)
(c-doc-comment-start-regexp, c-decl-start-colon-kwd-re)
(c-type-decl-prefix-key, c-type-decl-operator-prefix-key)
(c-pre-id-bracelist-key, c-enum-clause-introduction-re)
(c-nonlabel-token-2-key)
* lisp/progmodes/cc-mode.el (c-doc-fl-decl-start, c-doc-fl-decl-end)
* lisp/progmodes/cc-vars.el (c-noise-macro-with-parens-name-re)
(c-noise-macro-name-re, c-make-noise-macro-regexps)
* lisp/progmodes/octave.el (octave-help-mode)
* lisp/vc/vc-bzr.el (vc-bzr-log-view-mode, vc-bzr-revision-completion-table)
* lisp/vc/vc-git.el (vc-git-log-view-mode)
* lisp/vc/vc-hg.el (vc-hg-log-view-mode)
* lisp/vc/vc-mtn.el (vc-mtn-log-view-mode):
Use `regexp-unmatchable'.
* lisp/textmodes/ispell.el (ispell-non-empty-string):
Use `regexp-unmatchable', fixing a broken never-match regexp.
2019-05-15 18:55:27 +02:00
Stefan Monnier
3c1967dbfe * lisp/emacs-lisp/packages.el: Add all to package-check-signature
(package-check-signature): Add `all` option.
(package--check-signature-content): Adjust accordingly.
2019-05-12 13:03:24 -04:00
Michael Heerdegen
eda8ea6858 Fix alist-get gv setter not returning VAL
This fixes Bug#35546.

* lisp/emacs-lisp/gv.el (alist-get): Make setter return the set value
to preserve 'setf' semantics.
2019-05-09 22:28:19 +02:00
Stefan Monnier
f97628f58e * lisp/emacs-lisp/syntax.el (syntax-propertize): ignore is like nil
(syntax-ppss-after-change-function): Mark it as obsolete.
* lisp/font-lock.el (font-lock-apply-syntactic-highlight):
Use syntax-ppss-flush-cache instead.
2019-05-08 15:18:32 -04:00
Glenn Morris
8b789755b4 Merge from origin/emacs-26
1c6484e (origin/emacs-26) Fix incorrect cloning of eieio-instance-inh...
37436fe Fix cloning of eieio-named objects (Bug#22840)
fb65a36 Fix ibuffer-unmark-backward synopsis (bug#35572)
f77bd2b ; * src/lisp.h (DEFSYM): Fix inaccurate comment.
3b86e0b Clarify handling of long options (Bug#24949)
04340a8 Improve documentation of the daemon and emacsclient
3e29de2 * etc/NEWS.24: Belatedly announce delete-consecutive-dups.
2019-05-08 07:51:48 -07: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
Juri Linkov
6fa99f06b9 * lisp/emacs-lisp/lisp.el (insert-pair-alist): Turn defvar into defcustom.
Revert to old default value.  (Bug#35480)
2019-05-06 22:32:26 +03:00
Juri Linkov
c64cb02cca * lisp/emacs-lisp/lisp.el (insert-pair-alist): Precompute default value.
Use unicode-property-table-internal with 'paired-bracket to append
pairs of open/close characters to the default value (bug#35480).
2019-05-05 22:34:03 +03:00
Stefan Monnier
9e8e3975ad * lisp/emacs-lisp/edebug.el: Better handle instrumentation of end-of-defun
Remove redundant :group args.
(edebug-read-top-level-form): Let-bind edebug-active.
(edebug-active): Move before this new first use.
2019-05-01 12:45:37 -04:00
Glenn Morris
6662938619 Merge from origin/emacs-26
0e8d452 ; * doc/lispref/nonascii.texi (Coding System Basics): Fix gra...
25a2ff7 ; Add missing space in custom.texi
9ec18fb * admin/admin.el (set-version): Check for increase in version...
93912ba Be more careful about indent-sexp going over eol (Bug#35286)
2019-04-29 09:08:19 -07:00
Stephen Leake
1486eadf7c Fix Bug#33618; define search path variables for grep, byte-compile
* etc/NEWS: Mention new variables.

* lisp/emacs-lisp/bytecomp.el (emacs-lisp-compilation-search-path): New.

* lisp/progmodes/grep.el (grep-search-path): New.
2019-04-25 15:49:38 -07:00
Eli Zaretskii
2b3c0ae582 Fix rescheduling timers after suspension
* lisp/emacs-lisp/timer.el (timer-event-handler): Fix the
comparison between next invocation time and current time.
2019-04-24 18:13:04 +03:00
Stefan Monnier
1828e9a9b7 * lisp/emacs-lisp/timer-list.el: Fix header-line alignment
Enable lexical-binding.
(cl-print-compiled, cl-print-compiled-button): Declare.
(timer-list-mode): Add spacing to align the header.
2019-04-23 17:54:13 -04: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
Basil L. Contovounesios
3a618e5f89 Move side-effect-free from unsafep.el to subr.el
* lisp/emacs-lisp/unsafep.el: Move side-effect-free property setting
from here...
* lisp/subr.el: ...to here, as function declarations for modularity.
2019-04-21 19:04:13 +01:00
Stefan Monnier
6f334b6bc0 * lisp/emacs-lisp/smie.el (smie-indent-comment-continue): Single-char case.
Make it so the comment-continue is aligned with the comment-start when
comment-start is a single-char.
2019-04-19 23:51:21 -04:00
Stefan Monnier
69771b4e6a * lisp/emacs-lisp/radix-tree.el (pcase-defmacro): Improve docstring 2019-04-19 23:31:59 -04:00
Stefan Monnier
4c85e3f7e9 * lisp/emacs-lisp/byte-run.el (define-obsolete-variable-alias): Tweak doc 2019-04-19 23:29:33 -04:00
Philipp Stephani
0b4b380ce4 Make warning about unescaped character literals more helpful.
See Bug#31676.

* lisp/emacs-lisp/byte-run.el
(byte-run--unescaped-character-literals-warning): New defun.

* src/lread.c (load_warn_unescaped_character_literals): Use new defun.
(syms_of_lread): Define symbol for new defun.

* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer): Use new
defun.

* 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.
2019-04-19 19:19:35 +02:00
Noam Postavsky
7a382383ac Properly bracket concat of comment-start-skip (Bug#34805)
* lisp/emacs-lisp/smie.el (smie-indent-fixindent):
* lisp/cedet/semantic/doc.el (semantic-doc-snarf-comment-for-tag):
* lisp/progmodes/fortran.el (fortran-previous-statement)
(fortran-next-statement)
(fortran-fill-statement):
* lisp/progmodes/vhdl-mode.el (vhdl-beginning-of-statement): Bracket
comment-start-skip and comment-end-skip to avoid unexpected regexp
operator precedence.
2019-04-15 20:28:03 -04:00
Paul Eggert
7ddd08bd3e Omit/rewrite useless regexp repetitions
Problem reported by Mattias Engdegård in:
https://lists.gnu.org/r/emacs-devel/2019-04/msg00527.html
* lisp/align.el (align-rules-list):
* lisp/cedet/srecode/srt-mode.el (srecode-font-lock-keywords):
* lisp/emacs-lisp/copyright.el (copyright-regexp):
* lisp/erc/erc-backend.el (JOIN):
* lisp/erc/erc-goodies.el (erc-unmorse):
* lisp/mail/mail-extr.el (mail-extr-telephone-extension-pattern):
* lisp/net/tramp-adb.el (tramp-adb-prompt):
* lisp/org/org-table.el (org-table-range-regexp):
* lisp/progmodes/idlwave.el (idlwave-where):
* lisp/progmodes/verilog-mode.el (verilog-declaration-re-2-no-macro)
(verilog-declaration-re-2-macro, verilog-delete-auto-buffer)
(verilog-auto-inst-port):
* lisp/url/url-misc.el (url-data):
Omit or rewrite useless repetitions that risk being very slow in
the backtracking regexp engine in Emacs.
2019-04-12 19:43:41 -07:00