[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master 5f72004: Revert "Fix command repetition with lexica
From: |
Noam Postavsky |
Subject: |
[Emacs-diffs] master 5f72004: Revert "Fix command repetition with lexical-binding (Bug#29334)" |
Date: |
Sat, 6 Jan 2018 21:48:59 -0500 (EST) |
branch: master
commit 5f720046783c5b29fad3765303c1ad57aba167ce
Author: Noam Postavsky <address@hidden>
Commit: Noam Postavsky <address@hidden>
Revert "Fix command repetition with lexical-binding (Bug#29334)"
It does not work with more complicated interactive forms, because
byte-compile-lambda actually receives an intermediate form of code
rather than valid lisp source (Bug#29988).
* src/callint.c (Fcall_interactively):
* lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Revert previous
change, and update commentary.
---
lisp/emacs-lisp/bytecomp.el | 7 ++++++-
src/callint.c | 4 +---
2 files changed, 7 insertions(+), 4 deletions(-)
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 564aac2..cc3a24e 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2839,7 +2839,12 @@ for symbols generated by the byte compiler itself."
(while (consp (cdr form))
(setq form (cdr form)))
(setq form (car form)))
- (if (eq (car-safe form) 'list)
+ (if (and (eq (car-safe form) 'list)
+ ;; For code using lexical-binding, form is not
+ ;; valid lisp, but rather an intermediate form
+ ;; which may include "calls" to
+ ;; internal-make-closure (Bug#29988).
+ (not lexical-binding))
nil
(setq int `(interactive ,newform)))))
((cdr int)
diff --git a/src/callint.c b/src/callint.c
index dcda0bc..c713e08 100644
--- a/src/callint.c
+++ b/src/callint.c
@@ -357,9 +357,7 @@ invoke it. If KEYS is omitted or nil, the return value of
/* Compute the arg values using the user's expression. */
specs = Feval (specs,
CONSP (funval) && EQ (Qclosure, XCAR (funval))
- ? CAR_SAFE (XCDR (funval))
- : COMPILEDP (funval) && INTEGERP (AREF (funval,
COMPILED_ARGLIST))
- ? Qt : Qnil);
+ ? CAR_SAFE (XCDR (funval)) : Qnil);
if (events != num_input_events || !NILP (record_flag))
{
/* We should record this command on the command history. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master 5f72004: Revert "Fix command repetition with lexical-binding (Bug#29334)",
Noam Postavsky <=