Commit graph

5915 commits

Author SHA1 Message Date
Lars Ingebrigtsen
dbd1d2ebf8 Tweak gv-define-setter debug setting
* lisp/emacs-lisp/gv.el (gv-define-setter): Change edebug spec
from body to def-body (bug#28729).
2019-07-15 11:16:37 +02:00
Lars Ingebrigtsen
dea9970bc0 package-archive-priorities doc addition
* lisp/emacs-lisp/package.el (package-archive-priorities):
Document that negative priorities will lead to packages not being
updated (bug#28897).
2019-07-15 00:22:45 +02:00
Lars Ingebrigtsen
9d84fcbef5 Make elint understand condition-case-unless-debug
* lisp/emacs-lisp/elint.el (elint-special-forms): Teach elint
about `condition-case-unless-debug' (bug#29585).
2019-07-14 20:24:03 +02:00
Noam Postavsky
427ccb9321 Remove incorrect commentary about #$ in autoloads
* lisp/emacs-lisp/autoload.el (autoload-rubric):
`package-quickstart-refresh' does in fact support load-file-name as
well.
2019-07-13 21:25:10 -04:00
Lars Ingebrigtsen
ed29d9fe52 Add edebug specs for inline.el
* lisp/emacs-lisp/inline.el (inline-quote)
(inline-letevals): Add edebug specs (bug#31051).
2019-07-13 18:07:11 +02:00
Lars Ingebrigtsen
196ea8c4b3 Tweak output of doc in advice--make-docstring
* lisp/emacs-lisp/nadvice.el (advice--make-docstring): Make the
bit about the function/macro having an advice into a complete
sentence (bug#31063) and make it less dramatic.
2019-07-13 17:48:53 +02:00
Lars Ingebrigtsen
5a90307351 Make check-declare understand cl-defun
* lisp/emacs-lisp/check-declare.el (check-declare-verify): Add
cl-defun to the defun-ish regexp (bug#31396).
2019-07-13 16:49:23 +02:00
Lars Ingebrigtsen
67e2116160 Fix cl-defstruct doc string fix
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Remove sentence from
doc string that was left in by mistake when fixing the arglist
documentation.
2019-07-13 14:27:36 +02:00
Phil Sainty
c87878af7d * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Fix a docstring typo 2019-07-13 23:58:14 +12:00
Michael Albinus
9939e04404 * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Adapt docstring. 2019-07-13 13:30:35 +02:00
Lars Ingebrigtsen
1b0d621f02 Document fix for cl-defstruct
* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Document that we can
have a doc string (bug#32340).
2019-07-13 05:05:03 +02:00
Lars Ingebrigtsen
1ed034b998 Always include the number of unexpected ert tests
* lisp/emacs-lisp/ert.el (ert-summarize-tests-batch-and-exit):
Always include the number of failed tests, because absence of the
text is not reassuring (bug#36616).
2019-07-13 01:55:25 +02:00
Stefan Monnier
6397716871 Revert "Turn off bytecode jumptables to avoid Bug#36447"
This reverts commit 122198d2f1.
Should not be needed any more thanks to Pip Cet's patch to hash_table_rehash.
2019-07-09 16:16:37 -04:00
Lars Ingebrigtsen
547800dade Checkdoc would bug out on empty files
* lisp/emacs-lisp/checkdoc.el (checkdoc--next-docstring): Don't
bug out on malformed Emacs Lisp (bug#34760).
(checkdoc-file-comments-engine): Don't bug out on empty buffers.
2019-07-09 18:45:18 +02:00
Ryan Brown
d34bfbc09c Fix for lisp tagbody indentation
* lisp/emacs-lisp/cl-indent.el (lisp-indent-259): Indent PROG
better (bug#36552).
2019-07-09 15:51:50 +02:00
Lars Ingebrigtsen
733f30b4cb Tweak messaging in re-builder
* lisp/emacs-lisp/re-builder.el (reb-copy): Say what we copied to
the kill ring.
2019-07-09 03:44:13 +02:00
Noam Postavsky
122198d2f1 Turn off bytecode jumptables to avoid Bug#36447
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-use-jump-table): Set
to nil.  We can turn this back on again when Bug#36447 is solved and
we handle dumped hash tables correctly.
2019-07-08 18:06:21 -04:00
Mattias Engdegård
72e21777d0 Shorter `rx' doc string (bug#36496)
* lisp/emacs-lisp/rx.el (rx): Replace long description with a condensed
summary of the rx syntax, with reference to the manual section.
2019-07-07 11:49:22 +02:00
Stefan Monnier
851535f587 * lisp/emacs-lisp/nadvice.el: Make it a package separate from emacs.
* lisp/finder.el (finder-compile-keywords): Grab version from
package--builtin-versions when available.
2019-07-06 18:42:02 -04:00
Noam Postavsky
1f7b602f84 Add commentary about #$ in autoload files
* lisp/emacs-lisp/autoload.el (autoload-rubric): Add commentary about
`#$' trick.
2019-07-06 14:34:47 -04:00
Mattias Engdegård
3fd7491512 Optimise more inputs to `regexp-opt' (bug#36444)
Use a more precise test to determine whether the input to `regexp-opt'
is safe to optimise when KEEP-ORDER is non-nil, permitting more inputs
to be optimised than before.  For example, ("good" "goal" "go") is now
accepted.

* lisp/emacs-lisp/regexp-opt.el (regexp-opt):
More precise test for whether the list is safe w.r.t. KEEP-ORDER.
(regexp-opt--contains-prefix): Remove.

* test/lisp/emacs-lisp/regexp-opt-tests.el: Use lexical-binding.
(regexp-opt-test--permutation, regexp-opt-test--factorial)
(regexp-opt-test--permutations, regexp-opt-test--match-all)
(regexp-opt-test--check-perm, regexp-opt-test--explain-perm)
(regexp-opt-keep-order): Test KEEP-ORDER.
2019-07-04 17:18:15 +02:00
Mattias Engdegård
22b64f7bac Better error message for C-h P RET
Previously:
  package--incompatible-p: Wrong type argument: package-desc, nil
Now:
  No package specified

* lisp/emacs-lisp/package.el (describe-package): Don't use ## as input.
2019-07-02 10:57:39 +02:00
Mattias Engdegård
f1d414b98f Allow empty argument to `regexp-opt-charset'
* test/lisp/emacs-lisp/regexp-opt-tests.el (regexp-opt-charset):
Handle nil argument, and use regexp-quote for singletons.
* lisp/emacs-lisp/regexp-opt.el (regexp-opt-charset): Expand tests.
2019-06-29 11:12:27 +02:00
Mattias Engdegård
d8aba87a0d Strength-reduce equal', eql', member' and memql'
When comparing against symbols, turn `equal' and `eql' into `eq',
and `member' and `memql' into `memq'.

* lisp/emacs-lisp/byte-opt.el (byte-optimize--constant-symbol-p)
(byte-optimize-equal, byte-optimize-member): New.
(member, memql, equal, eql): Use new byte-optimizers.
2019-06-28 22:47:27 +02:00
Lennart Borgman
c1234ca9c3 Add more fontification to regexp builder mode
* lisp/emacs-lisp/re-builder.el (reb-copy): Work in the presence
of newlines in the regexps.
(reb-change-syntax): Use a dedicated history variable.
(reb-fontify-string-re): Fontify sub-matches.
(reb-regexp-grouping-backslash, reb-regexp-grouping-construct):
New faces.
(reb-string-font-lock-keywords): New variable.
(reb-mark-non-matching-parenthesis): Match parenthesis.
(reb-restart-font-lock): New function.

* lisp/emacs-lisp/re-builder.el (reb-mode-map): Add divider some
dividers (bug#6347).
2019-06-27 19:08:42 +02:00
Stefan Monnier
0b4e003766 Revert "* lisp/calc/calc-ext.el (math-scalarp): Fix typo"
This reverts commit 698ff554ac.
2019-06-26 10:24:59 -04:00
Stefan Monnier
698ff554ac * lisp/calc/calc-ext.el (math-scalarp): Fix typo 2019-06-26 10:03:48 -04:00
Noam Postavsky
9233865b70 Fix (rx-to-string (and (literal STR) (regexp STR)) regression
* lisp/emacs-lisp/rx.el (rx-regexp, rx-literal): Check the cadr of the
form for stringness, not the form itself.
* test/lisp/emacs-lisp/rx-tests.el (rx-to-string-lisp-forms): New test.
2019-06-26 08:50:27 -04:00
Mattias Engdegård
260b6c2c93 Merge consecutive constant `concat' args (bug#14769)
Suggested by Shigeru Fukaya <shigeru.fukaya@gmail.com>

* lisp/emacs-lisp/byte-opt.el (byte-optimize-concat): New.
(concat): Add byte-optimizer.
2019-06-26 11:39:12 +02:00
Noam Postavsky
b59ffd2290 Support (rx (and (regexp EXPR) (literal EXPR))) (Bug#36237)
* lisp/emacs-lisp/rx.el (rx-regexp): Allow non-string forms.
(rx-constituents): Add literal constituent, which is like a plain
STRING form, but allows arbitrary lisp expressions.
(rx-literal): New function.
(rx-compile-to-lisp): New variable.
(rx--subforms): New helper function for handling subforms, including
non-constant case.
(rx-group-if, rx-and, rx-or, rx-=, rx->=, rx-repeat, rx-submatch)
(rx-submatch-n, rx-kleene, rx-atomic-p): Use it to handle non-constant
subforms.
(rx): Document new form, wrap non-constant forms with concat call.
* test/lisp/emacs-lisp/rx-tests.el (rx-tests--match): New macro.
(rx-nonstring-expr, rx-nonstring-expr-non-greedy): New tests.
* etc/NEWS: Announce changes.
2019-06-25 22:00:03 -04:00
Stefan Monnier
5463b7e77a * lisp/emacs-lisp/cl-extra.el (cl-isqrt): Speed up bignum case 2019-06-25 17:08:01 -04:00
Lars Ingebrigtsen
98247645a7 Move widen/narrow in tabulated lists to } and {
* doc/emacs/buffers.texi (Several Buffers): Document it.

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode-map):
Move widen/narrow to `}' and `{'.
2019-06-25 22:34:55 +02:00
Vaidheeswaran C
9de1177a1e Preserve header lines from derived modes in tabulated lists
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-init-header):
Preserve header line set by derived modes (bug#21025).
2019-06-25 18:09:54 +02:00
Damien Cassou
cf9f481d98 Add imenu support to package-menu-mode
* lisp/emacs-list/package.el
(package--imenu-prev-index-position-function
package--imenu-extract-index-name-function): Add Imenu functions
to package-menu-mode (bug#27134).
2019-06-25 01:31:10 +02:00
Lars Ingebrigtsen
b72cd0c746 Fix up key bindings in previous tabulated-list patch
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode-map):
Actually use `w'/`c' as described in previous patch.
2019-06-24 16:45:54 +02:00
Lars Ingebrigtsen
1ad3387600 Add new commands to widen/narrow tabulated list columns
* doc/emacs/buffers.texi: Document widen/contracting commands in
tabulated list mode.
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-mode-map): Add
keystrokes.
(tabulated-list-widen-current-column): New command.
(tabulated-list-narrow-current-column): Ditto.  The code was
written by Boruch Baum and then tweaked by Drew Adams (bug#32106)
before some white-space changes before the commit.
2019-06-24 16:35:13 +02:00
Lars Ingebrigtsen
f3b1b5fb50 Document syntax-ppss-context
* doc/lispref/syntax.texi (Parser State): Document it.

* lisp/emacs-lisp/syntax.el (syntax-ppss-context): Add a doc
string (bug#32504).
2019-06-24 00:04:04 +02:00
Alex Branham
0b7494414a (if-let): Improve docstring by mentioning let*
* lisp/emacs-lisp/subr-x.el (if-let): Clarify that if-let is like
let*, not like let (bug#33550).
2019-06-23 22:55:40 +02:00
Mattias Engdegård
2eafb4af55 Check validity of rx submatch-n number
* lisp/emacs-lisp/rx.el (rx-submatch): Type and range check (Bug#34373).
2019-06-23 20:31:48 +02:00
Stefan Monnier
b9d0337c84 (with-suppressed-warnings): Also suppress warnings when not byte-compiling
* lisp/emacs-lisp/byte-run.el (with-suppressed-warnings): Bind
byte-compile--suppressed-warnings when possible.
2019-06-22 23:29:00 -04:00
Stefan Monnier
436ccc6967 * lisp/emacs-lisp/bytecomp.el (byte-compile-dynamic): Mark obsolete
See bug#11649 for an example problem, and emacs-devel discussion
«Prickliness of the "invalid byte code" stuff».

* lisp/wid-edit.el, lisp/wdired.el, lisp/vc/pcvs-util.el:
* lisp/progmodes/executable.el, lisp/mail/sendmail.el:
* lisp/emacs-lisp/cl-seq.el, lisp/emacs-lisp/cl-macs.el:
* lisp/emacs-lisp/cl-lib.el, lisp/emacs-lisp/cl-extra.el:
* lisp/dired-x.el, lisp/dired-aux.el, lisp/calendar/calendar.el:
Don't use byte-compile-dynamic any more.
2019-06-21 10:30:50 -04:00
Lars Ingebrigtsen
b67a6cb8dd Clean up eieio-custom slightly
* lisp/emacs-lisp/eieio-custom.el: Remove commented out code.
2019-06-20 12:51:39 +02:00
Lars Ingebrigtsen
4e0baad410 Remove XEmacs compat code from checkdoc.el
* lisp/emacs-lisp/checkdoc.el (checkdoc-minor-mode-map): Remove
XEmacs compat code.
2019-06-20 12:51:39 +02:00
Lars Ingebrigtsen
fc8a8bdb7f Move around defgeneric/defmethods in eieio
* lisp/emacs-lisp/eieio.el (object-print):
* lisp/emacs-lisp/eieio-base.el (eieio-object-set-name-string):
Move the defgeneric before the defmethod, because that makes more
sense.
2019-06-19 17:12:29 +02:00
Stefan Monnier
416b83e907 (with-suppressed-warnings): Make it apply to macro-expansion as well
* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
Change with-suppressed-warnings so it also affects the macro-expansion of
the body.
2019-06-19 10:47:55 -04:00
Lars Ingebrigtsen
eef48e124d Tweak progress reporting in update-directory-autoloads
* lisp/emacs-lisp/autoload.el (update-directory-autoloads): Use
progress reporter so say what percentage the progress is at.
2019-06-19 13:48:48 +02:00
Mattias Engdegård
d3a7f3e6cd Compile any subsequence of `cond' clauses to switch (bug#36139)
A single `cond' form can how be compiled to any number of switch ops,
optionally interspersed with non-switch conditions.
Previously, switch ops would only be used for whole `cond' forms
containing no other tests.

* lisp/emacs-lisp/bytecomp.el (byte-compile--cond-vars):
Rename from `byte-compile-cond-vars'.
(byte-compile--default-val): Remove.
(byte-compile--cond-switch-prefix):
Replace `byte-compile-cond-jump-table-info'; now also returns
trailing non-switch clauses.
(byte-compile-cond-jump-table): New arguments; no longer compiles
the default case.
(byte-compile-cond): Look for and compile switches at any place in the
list of clauses.
* test/lisp/emacs-lisp/bytecomp-tests.el (byte-opt-testsuite-arith-data):
Add test expression.
2019-06-19 11:22:21 +02:00
Mattias Engdegård
14a81524c2 Compile cond with heterogeneous tests into switch (bug#36139)
Allow any mixture of `eq', `eql' and `equal', `memq', `memql' and
`member' in a switch-like `cond' to be compiled into a single switch.

* lisp/emacs-lisp/bytecomp.el (byte-compile--common-test): New.
(byte-compile-cond-jump-table-info): Use most specific common test.
* test/lisp/emacs-lisp/bytecomp-tests.el (byte-opt-testsuite-arith-data):
Add test cases for multi-value clause cond forms.
2019-06-19 11:20:59 +02:00
Mattias Engdegård
b8c74742c0 Tighter pcase or-pattern member function selection (bug#36139)
* lisp/emacs-lisp/pcase.el (pcase--u1):
Use the most specific of `memq', `memql' and `member' in or-patterns
with constant cases.  This improves performance and may help the byte-code
compiler generate a switch.
* test/lisp/emacs-lisp/pcase-tests.el (pcase-tests-member):
Add mixed-type or-pattern test cases.
2019-06-19 11:20:58 +02:00
Mattias Engdegård
36ab408207 Compile list member functions in cond to switch (bug#36139)
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-jump-table-info):
Expand `memq', `memql' and `member' to their corresponding
equality tests.
(byte-compile-cond-jump-table): Cases now have multiple values.
* lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1)
(byte-optimize-lapcode): Don't assume switch hash tables to be injective.
2019-06-19 11:20:58 +02:00