* C-x z is useless after switching frames @ 2007-08-17 8:09 David Kastrup 2007-08-17 12:30 ` martin rudalics 0 siblings, 1 reply; 10+ messages in thread From: David Kastrup @ 2007-08-17 8:09 UTC (permalink / raw) To: emacs-pretest-bug Please write in English if possible, because the Emacs maintainers usually do not have translators to read other languages for them. Your bug report will be posted to the emacs-pretest-bug@gnu.org mailing list. Please describe exactly what actions triggered the bug and the precise symptoms of the bug: This is on a focus-follows-mouse window manager: After switching frames, C-x z spews an error message. See below. In GNU Emacs 22.1.50.4 (i686-pc-linux-gnu, GTK+ Version 2.10.11) of 2007-08-14 on lisa Windowing system distributor `The X.Org Foundation', version 11.0.70200000 configured using `configure '--prefix=/usr/local/emacs-21' '--without-toolkit-scroll-bars'' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_US.UTF-8 locale-coding-system: utf-8 default-enable-multibyte-characters: t Major mode: Shell-script Minor modes in effect: shell-dirtrack-mode: t TeX-PDF-mode: t server-mode: t desktop-save-mode: t tooltip-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t unify-8859-on-encoding-mode: t utf-translate-cjk-mode: t auto-compression-mode: t line-number-mode: t Recent input: <up> <up> <up> <up> <up> C-x z <switch-frame> C-x z M-x r e p o r t - e m a c s - b u g <return> Recent messages: Repeating command previous-line Repeating command handle-switch-frame repeat: handle-switch-frame must be bound to an event with parameters Loading emacsbug...done -- David Kastrup ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-17 8:09 C-x z is useless after switching frames David Kastrup @ 2007-08-17 12:30 ` martin rudalics 2007-08-17 20:17 ` Richard Stallman 2007-08-25 4:07 ` Richard Stallman 0 siblings, 2 replies; 10+ messages in thread From: martin rudalics @ 2007-08-17 12:30 UTC (permalink / raw) To: David Kastrup; +Cc: emacs-pretest-bug > repeat: handle-switch-frame must be bound to an event with parameters `repeat' can also produce things like handle-select-window must be bound to an event with parameters mouse-popup-menubar-stuff must be bound to an event with parameters Probably `repeat' should ignore event bound commands. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-17 12:30 ` martin rudalics @ 2007-08-17 20:17 ` Richard Stallman 2007-08-25 4:07 ` Richard Stallman 1 sibling, 0 replies; 10+ messages in thread From: Richard Stallman @ 2007-08-17 20:17 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-pretest-bug handle-select-window must be bound to an event with parameters mouse-popup-menubar-stuff must be bound to an event with parameters Probably `repeat' should ignore event bound commands. The way to fix this is to prevent those commands from getting into real-last-command. Would someone please implement that and ack? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-17 12:30 ` martin rudalics 2007-08-17 20:17 ` Richard Stallman @ 2007-08-25 4:07 ` Richard Stallman 2007-08-25 11:52 ` martin rudalics 1 sibling, 1 reply; 10+ messages in thread From: Richard Stallman @ 2007-08-25 4:07 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-pretest-bug [I sent this message a week ago but did not get a response.] handle-select-window must be bound to an event with parameters mouse-popup-menubar-stuff must be bound to an event with parameters Probably `repeat' should ignore event bound commands. The way to fix this is to prevent those commands from getting into real-last-command. Would someone please implement that and ack? ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-25 4:07 ` Richard Stallman @ 2007-08-25 11:52 ` martin rudalics 2007-08-26 1:08 ` Richard Stallman 0 siblings, 1 reply; 10+ messages in thread From: martin rudalics @ 2007-08-25 11:52 UTC (permalink / raw) To: rms; +Cc: emacs-pretest-bug > [I sent this message a week ago but did not get a response.] > > handle-select-window must be bound to an event with parameters > > mouse-popup-menubar-stuff must be bound to an event with parameters > > Probably `repeat' should ignore event bound commands. > > The way to fix this is to prevent those commands >>from getting into real-last-command. > > Would someone please implement that and ack? Inherently, changing `real-last-command' is not "nice". There might be some code around that relies on telling whether `real-last-command' was trying to handle a window or frame selection. Suppose also I tried to compare `last-command' and `real-last-command' to detect whether some code has deliberately changed `last-command'. The comparison would not fail because someone did, but because `real-last-command' was reset (resetting `last-command' together with `real-last-command' seems hardly the right solution for this). Disregarding my scruples, how do I tell whether `real-this-command' was bound to an input event at the time of executing current_kboard->Vreal_last_command = real_this_command; ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-25 11:52 ` martin rudalics @ 2007-08-26 1:08 ` Richard Stallman 2007-08-26 10:26 ` martin rudalics 0 siblings, 1 reply; 10+ messages in thread From: Richard Stallman @ 2007-08-26 1:08 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-pretest-bug Inherently, changing `real-last-command' is not "nice". I wasn't thinking of changing it; rather, not setting it at all for those kinds of events. That probably works in practice, because the only other package that tests `real-last-command' is table.el, and I think it could just as well use `last-command'. But you are right that this isn't entirely clean. What could be a cleaner method? Perhaps to make a new variable and set it at the C level, almost like `real-last-command' but excluding certain commands, or certain events. Disregarding my scruples, how do I tell whether `real-this-command' was bound to an input event at the time of executing current_kboard->Vreal_last_command = real_this_command; My idea was to test last_command_char. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-26 1:08 ` Richard Stallman @ 2007-08-26 10:26 ` martin rudalics 2007-08-26 22:46 ` Richard Stallman 0 siblings, 1 reply; 10+ messages in thread From: martin rudalics @ 2007-08-26 10:26 UTC (permalink / raw) To: rms; +Cc: emacs-pretest-bug [-- Attachment #1: Type: text/plain, Size: 1431 bytes --] > Inherently, changing `real-last-command' is not "nice". > > I wasn't thinking of changing it; rather, not setting it at all for > those kinds of events. I meant "changing the semantics of `real-last-command'". We'd change the semantics by _not_ setting it. > That probably works in practice, because the only other package > that tests `real-last-command' is table.el, and I think it could > just as well use `last-command'. Yes. But if we were to suggest not testing `real-last-command' in Lisp code (aside from repeat.el) we probably shouldn't mention that variable in the manual in the first place. > But you are right that this isn't entirely clean. > What could be a cleaner method? > > Perhaps to make a new variable and set it at the C level, almost like > `real-last-command' but excluding certain commands, or certain events. We could call it `last-repeatable-command' and have repeat.el use that instead of `real-last-command'. I attached a patch for keyboard.c. > Disregarding my scruples, how do I tell whether `real-this-command' was > bound to an input event at the time of executing > > current_kboard->Vreal_last_command = real_this_command; > > My idea was to test last_command_char. We maybe should say somewhere that it's a bad idea to change `last-command-char' (and probably `real-last-command' and `last-repeatable-command' as well) while executing a command. [-- Attachment #2: keyboard.patch --] [-- Type: text/plain, Size: 2408 bytes --] *** keyboard.c Sun Jun 10 17:46:54 2007 --- keyboard.c Sun Aug 26 11:22:14 2007 *************** *** 1536,1542 **** /* Do this after running Vpost_command_hook, for consistency. */ current_kboard->Vlast_command = Vthis_command; current_kboard->Vreal_last_command = real_this_command; ! while (1) { if (! FRAME_LIVE_P (XFRAME (selected_frame))) --- 1536,1544 ---- /* Do this after running Vpost_command_hook, for consistency. */ current_kboard->Vlast_command = Vthis_command; current_kboard->Vreal_last_command = real_this_command; ! if (!CONSP (last_command_char)) ! current_kboard->Vlast_repeatable_command = real_this_command; ! while (1) { if (! FRAME_LIVE_P (XFRAME (selected_frame))) *************** *** 1916,1921 **** --- 1918,1925 ---- { current_kboard->Vlast_command = Vthis_command; current_kboard->Vreal_last_command = real_this_command; + if (!CONSP (last_command_char)) + current_kboard->Vlast_repeatable_command = real_this_command; cancel_echoing (); this_command_key_count = 0; this_command_key_count_reset = 0; *************** *** 11053,11058 **** --- 11057,11063 ---- kb->Voverriding_terminal_local_map = Qnil; kb->Vlast_command = Qnil; kb->Vreal_last_command = Qnil; + kb->Vlast_repeatable_command = Qnil; kb->Vprefix_arg = Qnil; kb->Vlast_prefix_arg = Qnil; kb->kbd_queue = Qnil; *************** *** 11540,11545 **** --- 11545,11555 ---- DEFVAR_KBOARD ("real-last-command", Vreal_last_command, doc: /* Same as `last-command', but never altered by Lisp code. */); + DEFVAR_KBOARD ("last-repeatable-command", Vlast_repeatable_command, + doc: /* Last command that may be repeated. + The last command executed that was not bound to an input event. + This is the command `repeat' will try to repeat. */); + DEFVAR_LISP ("this-command", &Vthis_command, doc: /* The command now being executed. The command can set this variable; whatever is put here *************** *** 11938,11943 **** --- 11948,11954 ---- mark_object (kb->Voverriding_terminal_local_map); mark_object (kb->Vlast_command); mark_object (kb->Vreal_last_command); + mark_object (kb->Vlast_repeatable_command); mark_object (kb->Vprefix_arg); mark_object (kb->Vlast_prefix_arg); mark_object (kb->kbd_queue); [-- Attachment #3: Type: text/plain, Size: 142 bytes --] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-26 10:26 ` martin rudalics @ 2007-08-26 22:46 ` Richard Stallman 2007-08-29 12:09 ` martin rudalics 0 siblings, 1 reply; 10+ messages in thread From: Richard Stallman @ 2007-08-26 22:46 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-pretest-bug Please install your patch in Emacs 22, and fix repeat.el too. We maybe should say somewhere that it's a bad idea to change `last-command-char' (and probably `real-last-command' and `last-repeatable-command' as well) while executing a command. That is a good idea. Please propose a patch. ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-26 22:46 ` Richard Stallman @ 2007-08-29 12:09 ` martin rudalics 2007-08-30 7:15 ` Richard Stallman 0 siblings, 1 reply; 10+ messages in thread From: martin rudalics @ 2007-08-29 12:09 UTC (permalink / raw) To: rms; +Cc: emacs-pretest-bug [-- Attachment #1: Type: text/plain, Size: 41 bytes --] Attached find a patch for commands.texi. [-- Attachment #2: commands.patch --] [-- Type: text/plain, Size: 1308 bytes --] *** commands.texi.~1.105.~ Tue Jun 5 22:41:18 2007 --- commands.texi Wed Aug 29 14:01:42 2007 *************** *** 716,722 **** @section Information from the Command Loop The editor command loop sets several Lisp variables to keep status ! records for itself and for commands that are run. @defvar last-command This variable records the name of the previous command executed by the --- 716,724 ---- @section Information from the Command Loop The editor command loop sets several Lisp variables to keep status ! records for itself and for commands that are run. With the exception of ! @code{this-command} and @code{last-command} it's generally a bad idea to ! change any of these variables in a Lisp program. @defvar last-command This variable records the name of the previous command executed by the *************** *** 736,741 **** --- 738,749 ---- but never altered by Lisp programs. @end defvar + @defvar last-repeatable-command + This variable stores the most recently executed command that was not + part of an input event. This is the command @code{repeat} will try to + repeat, @xref{Repeating,,, emacs, The GNU Emacs Manual}. + @end defvar + @defvar this-command @cindex current command This variable records the name of the command now being executed by [-- Attachment #3: Type: text/plain, Size: 142 bytes --] _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: C-x z is useless after switching frames 2007-08-29 12:09 ` martin rudalics @ 2007-08-30 7:15 ` Richard Stallman 0 siblings, 0 replies; 10+ messages in thread From: Richard Stallman @ 2007-08-30 7:15 UTC (permalink / raw) To: martin rudalics; +Cc: emacs-pretest-bug The change is good. *** commands.texi.~1.105.~ Tue Jun 5 22:41:18 2007 --- commands.texi Wed Aug 29 14:01:42 2007 Please install it. ^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2007-08-30 7:15 UTC | newest] Thread overview: 10+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2007-08-17 8:09 C-x z is useless after switching frames David Kastrup 2007-08-17 12:30 ` martin rudalics 2007-08-17 20:17 ` Richard Stallman 2007-08-25 4:07 ` Richard Stallman 2007-08-25 11:52 ` martin rudalics 2007-08-26 1:08 ` Richard Stallman 2007-08-26 10:26 ` martin rudalics 2007-08-26 22:46 ` Richard Stallman 2007-08-29 12:09 ` martin rudalics 2007-08-30 7:15 ` Richard Stallman
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.