this is NOT my fault. it's andy's.
yes-or-no-p-dialog-box expects a misc-user-event of (call-interactively 'no).
instead, it's now (eval (funcall (quote call-interactively) (quote no))).
the change was in this fun:
/* Massage DATA to find the correct function and argument. Used by
popup_selection_callback() and the msw code. */
void
get_gui_callback (Lisp_Object data, Lisp_Object *fn, Lisp_Object *arg)
{
*fn = Qeval;
if (SYMBOLP (data)
|| (COMPILED_FUNCTIONP (data)
&& XCOMPILED_FUNCTION (data)->flags.interactivep)
|| (CONSP (data) && (EQ (XCAR (data), Qlambda))
&& !NILP (Fassq (Qinteractive, Fcdr (Fcdr (data))))))
{
/* Treat 'quit specially and manufacture our own quit. */
if (EQ (data, Qquit))
{
*arg = list3 (Qsignal, list2 (Qquote, Qquit), Qnil);
Vquit_flag = Qt;
}
else
{
*arg = list3 (Qfuncall, list2 (Qquote, Qcall_interactively),
list2 (Qquote, data));
}
}
else if (CONSP (data))
{
*arg = data;
}
else
{
*arg = list3 (Qsignal,
list2 (Qquote, Qerror),
list2 (Qquote, list2 (build_translated_string
("illegal callback"),
data)));
}
}
andy, please fix.
Michael Harnois wrote:
I've seen now in a couple of contexts that actions which pop up
a
dialog box hang my XEmacs, no matter what answer I give to the box. I
just had to kill to get out; no number of C-g would break out.
Lisp backtrace follows:
next-command-event(#<empty-event>)
byte-code("..." [next-command-event event misc-user-event-p event-object yes
throw ynp-done t no nil abort menu-no-selection-hook signal quit button-release-event-p
beep message "please answer the dialog box"] 3)
# (catch ynp-done ...)
# bind (echo-keystrokes event prompt)
yes-or-no-p-dialog-box("Buffer *sent reply to BRIAN STOFFREGEN* modified; kill
anyway? ")
# bind (prompt)
yes-or-no-p("Buffer *sent reply to BRIAN STOFFREGEN* modified; kill anyway?
")
kill-buffer(#<buffer "*sent reply to BRIAN STOFFREGEN*">)
#<compiled-function nil "...(4)" [kill-buffer] 2 991415 nil>()
call-interactively(kill-this-buffer)
funcall(call-interactively kill-this-buffer)
# bind (widget-callback-current-channel)
(let ((widget-callback-current-channel #<x-frame "emacs" 0x27ca>))
(funcall (quote call-interactively) (quote kill-this-buffer)))
)
eval((let ((widget-callback-current-channel #<x-frame "emacs" 0x27ca>))
(funcall (quote call-interactively) (quote kill-this-buffer))))
# (condition-case ... . error)
# (catch top-level ...)
uname -a: Linux
mharnois.workgroup.net 2.3.99-pre6 #6 Sun Apr 16 08:34:31 CDT 2000 i686
unknown
../xemacs-21.2/configure '--srcdir=/usr/src/xemacs-21.2' '--with-mule'
'--extra-verbose' '--with-gpm=no'
'--site-includes=/usr/include/postgresql'
'--site-libraries=/usr/lib/postgresql' '--with-athena=xaw'
'--cflags=-g -O6 -march=i686' '--use-union-type'
'--with-clash-detection' '--error-checking=none' '--with-xfs'
'--with-menubars=lucid' '--with-modules'
XEmacs 21.2-b32 "Kastor & Polydeukes" configured for `i686-pc-linux'.
Compilation / Installation:
Source code location: /usr/src/xemacs-21.2
Installation prefix: /usr/local
Additional header files: /usr/include/postgresql
Additional libraries: /usr/lib/postgresql
Operating system description file: `s/linux.h'
Machine description file: `m/intel386.h'
Compiler: gcc -g -O6 -march=i686
Relocating allocator for buffers: no
GNU version of malloc: yes
- Using Doug Lea's new malloc from the GNU C Library.
Window System:
Compiling in support for the X window system:
- X Windows headers location: /usr/X11R6/include
- X Windows libraries location: /usr/X11R6/lib
- Handling WM_COMMAND properly.
Compiling in support for the Athena widget set:
- Athena headers location: X11/Xaw
- Athena library to link: Xaw
Using Lucid menubars.
Using Lucid scrollbars.
Using Athena dialog boxes.
Using Athena native widgets.
TTY:
Compiling in support for ncurses.
Images:
Compiling in support for GIF images (builtin).
Compiling in support for XPM images.
Compiling in support for PNG images.
Compiling in support for JPEG images.
Compiling in support for TIFF images.
Compiling in support for X-Face message headers.
Sound:
Compiling in support for sound (native).
Compiling in support for ESD (Enlightened Sound Daemon).
Databases:
Compiling in support for Berkeley database.
Compiling in support for LDAP.
Compiling in support for PostgreSQL.
- Using PostgreSQL V7 bindings.
Internationalization:
Compiling in support for Mule (multi-lingual Emacs).
Compiling in support for XIM (X11R5+ I18N input method).
- Using raw Xlib to provide XIM support.
- Using XFontSet to provide bilingual menubar.
Compiling in support for Canna on Mule.
Compiling in support for the WNN input method on Mule.
- Using WNN version 6.
Mail:
Compiling in support for "dot-locking" mail spool file locking method.
Other Features:
Compiling in support for dynamic shared object modules.
Clash detection will use "${statedir}/${inststaticdir}/lock" for locking
files.
Using the union type for Lisp_Objects.
Compiling in support for extra debugging code.
--
Michael D. Harnois, Redeemer Lutheran Church, Washburn, IA
mdharnois(a)home.com aa0bt(a)aa0bt.ampr.org
God made everything out of nothing,
but the nothingness shows through. -- Paul Valery
--
Ben
In order to save my hands, I am cutting back on my mail. I also write
as succinctly as possible -- please don't be offended. If you send me
mail, you _will_ get a response, but please be patient, especially for
XEmacs-related mail. If you need an immediate response and it is not
apparent in your message, please say so. Thanks for your understanding.
See also
http://www.666.com/ben/typing.html.