]> git.eshelyaron.com Git - emacs.git/commitdiff
(Finteractive_form): If the interactive specification starts with a `(',
authorMichaël Cadilhac <michael.cadilhac@lrde.org>
Mon, 10 Sep 2007 09:42:13 +0000 (09:42 +0000)
committerMichaël Cadilhac <michael.cadilhac@lrde.org>
Mon, 10 Sep 2007 09:42:13 +0000 (09:42 +0000)
use it as a Lisp form.

src/ChangeLog
src/data.c

index 19854387b6acd3389188bd1da837971351934aad..cb8d66e14b4fb782bba8312c28f296389f96f0ce 100644 (file)
@@ -5,6 +5,9 @@
 
        * eval.c (Fcommandp): Change `->prompt' to `->intspec'.
 
+       * data.c (Finteractive_form): If the interactive specification starts
+       with a `(', use it as a Lisp form.
+
        * callint.c (Fcall_interactively): Comment fixes.
 
 2007-09-10  Stefan Monnier  <monnier@iro.umontreal.ca>
index 1f82f929281c70969981e8e07ef89673e96d8b35..dfc0c35705aae23852153d943daa8e3257866b3f 100644 (file)
@@ -770,8 +770,11 @@ Value, if non-nil, is a list \(interactive SPEC).  */)
 
   if (SUBRP (fun))
     {
-      if (XSUBR (fun)->prompt)
-       return list2 (Qinteractive, build_string (XSUBR (fun)->prompt));
+      char *spec = XSUBR (fun)->intspec;
+      if (spec)
+       return list2 (Qinteractive,
+                     (*spec != '(') ? build_string (spec) :
+                     Fcar (Fread_from_string (build_string (spec), Qnil, Qnil)));
     }
   else if (COMPILEDP (fun))
     {