+2005-03-17 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * frame.c (Fignore_event): Fix ancient obscure C-u handling bug.
+
2005-03-17 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* mac.c (HASHKEY_TERMINAL): Remove.
(HASHKEY_MAX_NID): New macro.
(xrm_q_get_resource_1): Rename from xrm_q_get_resource. Add extra
argument.
- (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra
- argument.
+ (xrm_q_get_resource): Call xrm_q_get_resource_1 with extra argument.
(xrm_create_database, xrm_q_put_resource)
(xrm_merge_string_database, xrm_q_get_resource_1)
(xrm_q_get_resource): Change resource database representation so
/* Generic frame functions.
- Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2003, 2004
+ Copyright (C) 1993, 1994, 1995, 1997, 1999, 2000, 2001, 2003, 2004, 2005
Free Software Foundation.
This file is part of GNU Emacs.
}
DEFUN ("ignore-event", Fignore_event, Signore_event, 0, 0, "",
- doc: /* Do nothing, but preserve any prefix argument already specified.
+ doc: /* Do nothing.
This is a suitable binding for `iconify-frame' and `make-frame-visible'. */)
()
{
- current_kboard->Vprefix_arg = Vcurrent_prefix_arg;
+ /* Contrary to `handle-switch-frame', `ignore-event' is used from
+ `special-event-map'. Commands from that map are run in a special
+ way that automatically preserves the prefix-arg. Restoring
+ the prefix arg here is not just redundant but harmful:
+ - C-u C-x v =
+ - current-prefix-arg is set to non-nil, prefix-arg is set to nil.
+ - after the first prompt, the exit-minibuffer-hook is run which may
+ iconify a frame and thus push a `iconify-frame' event.
+ - after running exit-minibuffer-hook, current-prefix-arg is
+ restored to the non-nil value it had before the prompt.
+ - we enter the second prompt.
+ current-prefix-arg is non-nil, prefix-arg is nil.
+ - before running the first real event, we run the special iconify-frame
+ event, but we pass the `special' arg to execute-command so
+ current-prefix-arg and prefix-arg are left untouched.
+ - here we foolishly copy the non-nil current-prefix-arg to prefix-arg.
+ - the next key event will have a spuriously non-nil current-prefix-arg.
+ current_kboard->Vprefix_arg = Vcurrent_prefix_arg; */
return Qnil;
}