Commit graph

5151 commits

Author SHA1 Message Date
Mark Oteiza
1b4442bee9 Don't expand body inside a let-binding when there are no bindings
* lisp/emacs-lisp/pcase.el (pcase-codegen): Only let-bind if VARS
is non-nil.
2017-02-15 20:40:46 -05:00
Vibhav Pant
71b90192da byte-opt: Replace merged tags in jump tables too. (bug#25716)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode): While merging
  adjacent tags, make sure that the old tag is replaced in all jump
  tables, if any. This fixes the bytecode VM jumping to the wrong
  address in compiled cond forms where the body of a clause was a loop
  of any sort.
2017-02-14 21:53:26 +05:30
Vibhav Pant
cb410433e0 Merge branch 'master' into feature/byte-switch 2017-02-13 17:07:36 +05:30
Vibhav Pant
e742450427 ; Add more documentation for byte-switch related code. 2017-02-13 16:44:06 +05:30
Mark Oteiza
91478f4623 Nix some useless uses of looking-at, looking-back
* lisp/allout.el (allout-kill-topic):
(allout-next-topic-pending-encryption):
* lisp/bookmark.el (bookmark-kill-line):
* lisp/cus-edit.el (custom-save-variables, custom-save-faces):
* lisp/cus-theme.el (custom-theme-write-variables):
(custom-theme-write-faces):
* lisp/emacs-lisp/autoload.el (autoload-generate-file-autoloads):
* lisp/emacs-lisp/bytecomp.el (byte-compile-from-buffer):
* lisp/emacs-lisp/checkdoc.el (checkdoc-interactive-loop):
(checkdoc-interactive-ispell-loop):
(checkdoc-message-interactive-ispell-loop, checkdoc-this-string-valid):
(checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/elint.el (elint-get-top-forms):
* lisp/emulation/viper-cmd.el (viper-backward-indent):
* lisp/image-dired.el (image-dired-delete-char):
* lisp/simple.el (kill-visual-line): Replace instances of looking-at,
looking-back with char comparisons using following-char, preceding-char.
2017-02-12 10:59:33 -05:00
Vibhav Pant
219339e2eb ; lisp/emacs-lisp/bytecomp.el: Fix indentation. 2017-02-12 13:24:55 +05:30
Vibhav Pant
c1a9b5db0e Merge branch 'master' into feature/byte-switch 2017-02-11 19:54:37 +05:30
Gemini Lasswell
c48f8fa51b Fix instrumenting code with propertized strings in Edebug
* lisp/emacs-lisp/edebug.el (edebug-read-function): Allow
'read' to decide what is and isn't a syntax error.  (Bug#25068)
2017-02-10 11:35:20 +02:00
Vibhav Pant
dde800c8c9 Improve byte-switch execution.
* lisp/emacs-lisp/byte-opt.el,
  lisp/emacs-lisp/bytecomp.el (byte-decompile-bytecode-1),
  (byte-compile-lapcode): Calculate the actual jump address while
  compiling, store it in the jump table.

* src/bytecode.c: Jump to the looked up value directly, do a linear
  search when the number of elements is <= 5.
2017-02-09 12:18:54 +05:30
Vibhav Pant
c4316a2661 ; bytecomp.el (byte-compile-cond-jump-table): Add TODO note 2017-02-06 19:33:01 +05:30
Vibhav Pant
a12b416bca ; byte(-opt, comp).el: Add more documentation for byte-switch code. 2017-02-06 13:26:25 +05:30
Vibhav Pant
ad70ca1dad Merge remote-tracking branch 'origin/master' into feature/byte-switch 2017-02-05 23:08:53 +05:30
Vibhav Pant
2db473bda8 bytecomp.el: Use macroexp-const-p instead of bc-cond-valid-obj2-p.
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-vars): Use
  (macroexp-cons-p) instead of (byte-compile-cond-valid-obj2-p) to
  make sure that obj1/obj2 can be compared with `eq'.
2017-02-05 22:32:21 +05:30
Vibhav Pant
74a3423b0b * byte-opt.el (byte-decompile-bytecode-1): Use eq instead of =. 2017-02-05 22:10:22 +05:30
Vibhav Pant
382f6603ad ; Fix typo.
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-jump-table-info): Fix
  typo in docstring.
2017-02-05 21:51:05 +05:30
Vibhav Pant
490fc5a502 ; bytecomp.el (-inline-lapcode): Fix incorrect parenthesis, refactor 2017-02-05 21:48:27 +05:30
Vibhav Pant
cadb044fc2 bytecomp.el: Inline lapcode containing `byte-switch' correctly.
* lisp/emacs-lisp/bytecomp.el (byte-compile-inline-lapcode):
  Restore value of byte-compile-depth after emitting a jump to a tag
  in a jump table, or default/done tags.
  Set the depth of final tags for byte-switch to nil after emitting
  any jumps to them.
2017-02-05 19:23:53 +05:30
Vibhav Pant
fea1ad36a0 ; * byte-opt.el (byte-decompile-bytecode-1): Add more documentation. 2017-02-05 18:55:45 +05:30
Vibhav Pant
84eef50155 byte-opt.el: Replace jump tables while decompiling correctly.
* lisp/emacs-lisp/byte-opt.el (byte-decompile-bytecode-1):
  Don't make a copy of the constant vector, as it isn't used with
  the decompiled lapcode.
  Make sure that the correct lapcode pair/list is being modified while
  replacing the jump table.
2017-02-05 18:49:24 +05:30
Vibhav Pant
44c95c58b2 bytecomp.el: Don't store non-keyword symbols in jump-tables.
* lisp/emacs-lisp/bytecomp.el (byte-compile-cond-valid-obj2-p) return
  nil when OBJ is a non-keyword symbol (i.e a variable), as the jump
  table can only be used when comparing variables with constant values.
2017-02-05 15:37:43 +05:30
Gemini Lasswell
ef3d8d6f72 New macro 'ert-with-message-capture'
* lisp/emacs-lisp/ert-x.el (ert-with-message-capture): New macro.
(Bug#25158)

* test/lisp/autorevert-tests.el (auto-revert--wait-for-revert)
(auto-revert-test00-auto-revert-mode)
(auto-revert-test01-auto-revert-several-files)
(auto-revert-test02-auto-revert-deleted-file)
(auto-revert-test03-auto-revert-tail-mode)
(auto-revert-test04-auto-revert-mode-dired):
* test/lisp/filenotify-tests.el (file-notify-test03-autorevert): Use
ert-with-message-capture.
2017-02-04 13:36:43 +02:00
Gemini Lasswell
8ba27b7ce2 Avoid invalid read syntax errors due to 'ert-with-test-buffer'
* lisp/emacs-lisp/ert-x.el (ert-with-test-buffer): Fix the
'declare' form.  (Bug#24722)
2017-02-04 13:18:29 +02:00
Eli Zaretskii
a46a61904d Fix a syntax error when evaluating pcase.el under Edebug
* lisp/emacs-lisp/pcase.el (pcase-MACRO): Replace def-edebug-spec
with an explicit 'put' form.  Suggested by Gemini Lasswell
<gazally@runbox.com>.  (Bug#24717)
2017-02-04 13:12:14 +02:00
Gemini Lasswell
78f841d6db Change edebug-max-depth from defconst to defcustom
* lisp/emacs-lisp/edebug.el (edebug-max-depth): Add defcustom.
(Bug#24713)

* etc/NEWS: Mention edebug-max-depth.

* doc/lispref/edebug.texi (Checking Whether to Stop): Mention
edebug-max-depth and index it.  Add cross-references for
max-lisp-eval-depth and max-specpdl-size.

Co-authored-by: Eli Zaretskii <eliz@gnu.org>
2017-02-04 12:56:19 +02:00
Mark Oteiza
be10c00d3d Rename to if-let* and when-let*
Make the existing if-let and when-let aliases.
* lisp/emacs-lisp/subr-x.el (if-let*, when-let*): New macros.  Rewrite
docstrings, incorporating that from let* and the existing if-let.
(if-let, when-let, and-let*): Alias them.
2017-02-03 21:42:42 -05:00
Vibhav Pant
de456d1e4a Revert "Use maphash instead of cl-loop."
This reverts commit bfa8852013.
2017-02-03 23:23:28 +05:30
Vibhav Pant
bfa8852013 Use maphash instead of cl-loop.
* lisp/emacs-lisp/bytecomp.el: (byte-compile-lapcode) Use maphash
  instead of cl-loop
2017-02-01 18:15:59 +05:30
Mark Oteiza
12da2a5bea ; Bump let-alist
* lisp/emacs-lisp/let-alist.el: Bump micro version (bug#24641).
2017-01-31 19:47:53 -05:00
Ted Zlatanov
5af51bd445
read-multiple-choice: explain dialog popups more
* lisp/emacs-lisp/subr-x.el (read-multiple-choice): Explain
when a graphical popup is used and how it can be avoided.
2017-01-31 14:18:51 -05:00
Dima Kogan
fbf74c158e Revert two accidental commits
This reverts commit f3c77d11af.
This reverts commit 3c941b9000.
2017-01-31 07:49:37 -08:00
Dima Kogan
f3c77d11af stash 2017-01-30 21:04:11 -08:00
Vibhav Pant
f441451658 * lisp/emacs-lisp/bytecomp.el: Create jump tables with :purecopy t 2017-01-30 19:22:09 +05:30
Vibhav Pant
bf7f7c0d82 Merge remote-tracking branch 'origin/master' into feature/byte-switch 2017-01-30 18:35:43 +05:30
Noam Postavsky
9bf94639b8 Don't warn about obsolete defgenerics when defining them
* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): The declaration code
should run after the definition code (Bug#25556).
2017-01-29 11:16:06 -05:00
Vibhav Pant
25d38a06ec * lisp/emacs-lisp/bytecomp.el:(bc-cond-jump-table-info)add docstring 2017-01-26 23:03:02 +05:30
Vibhav Pant
a7e4870f16 * lisp/emacs-lisp/bytecomp.el: Use correct function to push nil
* lisp/emacs-lisp/bytecomp.el: (byte-compile-cond-jump-table) Use
  byte-compile-constant instead of byte-compile-form to push nil.
2017-01-26 14:31:16 +05:30
Vibhav Pant
6a82d19db1 * lisp/emacs-lisp/disass.el: Fix spacing while showing jump tables 2017-01-26 14:28:23 +05:30
Vibhav Pant
4e6140b283 * lisp/emacs-lisp/disass.el: Display jump tables for switch. 2017-01-26 01:02:16 +05:30
Vibhav Pant
19cb3985a3 * lisp/emacs-lisp/bytecomp.el:Use correct size for switch jump-table 2017-01-26 01:00:41 +05:30
Vibhav Pant
c52a9b6ddd * lisp/emacs-lisp/bytecomp.el: Simplify b-c-cond-valid-obj2-p 2017-01-26 00:58:36 +05:30
Vibhav Pant
8189b97e5c * lisp/emacs-lisp/bytecomp.el: Fix byte-switch codegen with symbols. 2017-01-26 00:57:10 +05:30
Vibhav Pant
0d3c57dcf3 * lisp/emacs-lisp/byte-opt.el: Add support for decompiling switch
* lisp/emacs-lisp/byte-opt.el: (byte-decompile-bytecode-1) When the
  constant encountered precedes a byte-switch op, replace all the
  addresses in the jump table with tags.
2017-01-26 00:54:59 +05:30
Mark Oteiza
43eba49553 Move cXXXr and cXXXXr to subr.el
* etc/NEWS: Mention new core Elisp.
* doc/lispref/lists.texi (List Elements): Document and index the new
functions.
* doc/misc/cl.texi (List Functions): Change "defines" to "aliases".
* lisp/subr.el (caaar, caadr, cadar, caddr, cdaar, cdadr, cddar)
(cdddr, caaaar caaadr, caadar, caaddr, cadaar, cadadr, caddar):
(cadddr, cdaaar, cdaadr, cdadar, cdaddr, cddaar, cddadr, cdddar):
(cddddr): New functions.
* lisp/emacs-lisp/cl-lib.el (cl-caaar, cl-caadr, cl-cadar, cl-caddr):
(cl-cdaar, cl-cdadr, cl-cddar cl-cdddr, cl-caaaar cl-caaadr):
(cl-caadar, cl-caaddr, cl-cadaar, cl-cadadr, cl-caddar, cl-cadddr):
(cl-cdaaar, cl-cdaadr, cl-cdadar, cl-cdaddr, cl-cddaar, cl-cddadr):
(cl-cdddar, cl-cddddr): Alias to new subr functions.
* lisp/emacs-lisp/cl.el (cl-unload-function): Remove cXXXr and cXXXXr
elements.
2017-01-25 14:21:10 -05:00
Alan Mackenzie
0c31ff43b6 Give , and .@ doc strings. Fixes bug #24561.
Also make *Help* links to ``' possible.  Also make usable as such doc strings
on the function-documentation property of a symbol.

* lisp/emacs-lisp/backquote.el (top-level): Give , and '@ doc strings on the
function-documentation property.  Also give these symbols a reader-construct
property.

* lisp/help-fns.el (describe-function): Allow the function-documentation
property to work.  Use princ rather than prin1 to print the function's name
when it has a reader-construct property.
(help-fns-signature): Don't insert `high-usage' for a reader-construct.
(describe-function-1): Adapt to process documentation on the
function-documentation property.  Print "a reader construct" when appropriate.

* lisp/help-mode.el (help-xref-symbol-regexp): Amend this regexp also to match
``'.
2017-01-23 19:00:49 +00:00
Tino Calancha
ade0652cc2 Prevent to use tabulated-list--near-rows unbound
* lisp/emacs-lisp/tabulated-list.el (tabulated-list-print-entry):
Make sure 'tabulated-list--near-rows' is bound before use it (Bug#25506).
2017-01-22 14:23:45 +09:00
Vibhav Pant
23a130ee0d * lisp/emacs-lisp/bytecomp.el: Remove unused debugging statements. 2017-01-21 11:37:20 +05:30
Noam Postavsky
82a5e4dc88 Fix free var FOO-mode-{syntax,abbrev}-table warnings
* lisp/emacs-lisp/derived.el (define-derived-mode): Unconditionally
defvar the syntax and abbrev tables so that the compiler will know that
they are dynamically bound variables (Bug#25446).
2017-01-19 20:15:18 -05:00
Vibhav Pant
fbe6b90b0c * lisp/emacs-lisp/bytecomp.el: Fix errors with matching quoted forms
* lisp/emacs-lisp/bytecomp.el: (byte-compile-cond-jump-table-info)
  eval obj2 to avoid quoted forms being stored as is.
2017-01-19 23:13:53 +05:30
Vibhav Pant
5f3379b338 lisp/emacs-lisp/bytecomp.el: Use byte-switch only for quoted symbols 2017-01-19 23:13:13 +05:30
Vibhav Pant
46193d5209 * lisp/emacs-lisp/bytecomp.el: Add default-case for last cond clause.
* lisp/emacs-lisp/bytecomp.el: (byte-compile-cond-jump-table) Add
default-case for last cond clause.
2017-01-19 23:12:09 +05:30