diff options
| author | Stefan Monnier | 2014-06-05 22:22:40 -0400 |
|---|---|---|
| committer | Stefan Monnier | 2014-06-05 22:22:40 -0400 |
| commit | 79b0d21638cce19216607a89b6470b1e72a028b8 (patch) | |
| tree | 3bdf9d7c36592177d0e73318b28d610840113e9f /src | |
| parent | b77205c029520f123ed1d41cba12262d4fcca09e (diff) | |
| download | emacs-79b0d21638cce19216607a89b6470b1e72a028b8.tar.gz emacs-79b0d21638cce19216607a89b6470b1e72a028b8.zip | |
* src/keyboard.c (read_char): Handle (t . <event>) in the second use of
Vunread_command_events.
Fixes: debbugs:17650
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 40 | ||||
| -rw-r--r-- | src/keyboard.c | 27 |
2 files changed, 35 insertions, 32 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 38feb804cd4..a56a0a27d92 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,7 +1,12 @@ | |||
| 1 | 2014-06-06 Stefan Monnier <monnier@iro.umontreal.ca> | ||
| 2 | |||
| 3 | * keyboard.c (read_char): Handle (t . <event>) in the second use of | ||
| 4 | Vunread_command_events (bug#17650). | ||
| 5 | |||
| 1 | 2014-06-06 Dmitry Antipov <dmantipov@yandex.ru> | 6 | 2014-06-06 Dmitry Antipov <dmantipov@yandex.ru> |
| 2 | 7 | ||
| 3 | * xterm.c (x_setup_pointer_blanking): Conditionally | 8 | * xterm.c (x_setup_pointer_blanking): |
| 4 | probe Xfixes until this stuff is stabilized (Bug#17609). | 9 | Conditionally probe Xfixes until this stuff is stabilized (Bug#17609). |
| 5 | 10 | ||
| 6 | 2014-06-05 Dmitry Antipov <dmantipov@yandex.ru> | 11 | 2014-06-05 Dmitry Antipov <dmantipov@yandex.ru> |
| 7 | 12 | ||
| @@ -19,14 +24,13 @@ | |||
| 19 | * nsterm.h (ns_popup_dialog): Adjust prototype. | 24 | * nsterm.h (ns_popup_dialog): Adjust prototype. |
| 20 | * nsterm.m (ns_create_terminal): | 25 | * nsterm.m (ns_create_terminal): |
| 21 | * w32term.c (w32_create_terminal): | 26 | * w32term.c (w32_create_terminal): |
| 22 | * xterm.c (x_create_terminal) [USE_X_TOOLKIT || USE_GTK]: Setup | 27 | * xterm.c (x_create_terminal) [USE_X_TOOLKIT || USE_GTK]: |
| 23 | popup_dialog_hook. | 28 | Setup popup_dialog_hook. |
| 24 | 29 | ||
| 25 | 2014-06-04 Eli Zaretskii <eliz@gnu.org> | 30 | 2014-06-04 Eli Zaretskii <eliz@gnu.org> |
| 26 | 31 | ||
| 27 | * w32heap.c (report_temacs_memory_usage): Improve the report by | 32 | * w32heap.c (report_temacs_memory_usage): Improve the report by |
| 28 | reporting the large blocks that are actually occupied at dump | 33 | reporting the large blocks that are actually occupied at dump time. |
| 29 | time. | ||
| 30 | 34 | ||
| 31 | * w32console.c (initialize_w32_display): Set the console | 35 | * w32console.c (initialize_w32_display): Set the console |
| 32 | menu_show_hook, otherwise TTY menus are broken on w32. | 36 | menu_show_hook, otherwise TTY menus are broken on w32. |
| @@ -86,8 +90,7 @@ | |||
| 86 | 2014-06-03 Eli Zaretskii <eliz@gnu.org> | 90 | 2014-06-03 Eli Zaretskii <eliz@gnu.org> |
| 87 | 91 | ||
| 88 | * w32heap.c (DUMPED_HEAP_SIZE): Move from w32heap.h. Don't use | 92 | * w32heap.c (DUMPED_HEAP_SIZE): Move from w32heap.h. Don't use |
| 89 | HEAPSIZE; instead, define separate values for the 32- and 64-bit | 93 | HEAPSIZE; instead, define separate values for the 32- and 64-bit builds. |
| 90 | builds. | ||
| 91 | (calloc): Don't undef, it is never defined. | 94 | (calloc): Don't undef, it is never defined. |
| 92 | (HEAP_ENTRY_SHIFT): Remove unused macro. | 95 | (HEAP_ENTRY_SHIFT): Remove unused macro. |
| 93 | 96 | ||
| @@ -103,16 +106,15 @@ | |||
| 103 | 106 | ||
| 104 | 2014-06-03 Paul Eggert <eggert@cs.ucla.edu> | 107 | 2014-06-03 Paul Eggert <eggert@cs.ucla.edu> |
| 105 | 108 | ||
| 106 | * process.c (wait_reading_process_output): Omit incorrect test | 109 | * process.c (wait_reading_process_output): Omit incorrect test of |
| 107 | of p->infd against zero. Add easserts for infd having a plausible | 110 | p->infd against zero. Add easserts for infd having a plausible value. |
| 108 | value. | ||
| 109 | 111 | ||
| 110 | 2014-06-02 Dmitry Antipov <dmantipov@yandex.ru> | 112 | 2014-06-02 Dmitry Antipov <dmantipov@yandex.ru> |
| 111 | 113 | ||
| 112 | Adjust to match recent lwlib changes. | 114 | Adjust to match recent lwlib changes. |
| 113 | * menu.h (xmalloc_widget_value): Replaced by ... | 115 | * menu.h (xmalloc_widget_value): Replace by ... |
| 114 | (make_widget_value): ... new prototype. | 116 | (make_widget_value): ... new prototype. |
| 115 | * menu.c (xmalloc_widget_value): Replaced by ... | 117 | * menu.c (xmalloc_widget_value): Replace by ... |
| 116 | (make_widget_value): ... new function. | 118 | (make_widget_value): ... new function. |
| 117 | (free_menubar_widget_value_tree, digest_single_submenu): Adjust users. | 119 | (free_menubar_widget_value_tree, digest_single_submenu): Adjust users. |
| 118 | * gtkutil.c (malloc_widget_value, free_widget_value): | 120 | * gtkutil.c (malloc_widget_value, free_widget_value): |
| @@ -272,8 +274,8 @@ | |||
| 272 | 274 | ||
| 273 | * w32heap.c (report_temacs_memory_usage): New function. | 275 | * w32heap.c (report_temacs_memory_usage): New function. |
| 274 | 276 | ||
| 275 | * unexw32.c (unexec) [ENABLE_CHECKING]: Call | 277 | * unexw32.c (unexec) [ENABLE_CHECKING]: |
| 276 | report_temacs_memory_usage. | 278 | Call report_temacs_memory_usage. |
| 277 | 279 | ||
| 278 | * w32heap.h (report_temacs_memory_usage): Add prototype. | 280 | * w32heap.h (report_temacs_memory_usage): Add prototype. |
| 279 | 281 | ||
| @@ -372,8 +374,7 @@ | |||
| 372 | * image.c (free_image): Undef free for Windows because it is | 374 | * image.c (free_image): Undef free for Windows because it is |
| 373 | redirected to our private version. | 375 | redirected to our private version. |
| 374 | 376 | ||
| 375 | * unexw32.c (COPY_PROC_CHUNK): Use %p format for 64bits | 377 | * unexw32.c (COPY_PROC_CHUNK): Use %p format for 64bits compatibility. |
| 376 | compatibility. | ||
| 377 | (copy_executable_and_dump_data): Remove dumping the heap section. | 378 | (copy_executable_and_dump_data): Remove dumping the heap section. |
| 378 | (unexec): Restore using_dynamic_heap after dumping. | 379 | (unexec): Restore using_dynamic_heap after dumping. |
| 379 | 380 | ||
| @@ -401,8 +402,7 @@ | |||
| 401 | 402 | ||
| 402 | 2014-05-26 Eli Zaretskii <eliz@gnu.org> | 403 | 2014-05-26 Eli Zaretskii <eliz@gnu.org> |
| 403 | 404 | ||
| 404 | * w32.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Define only if | 405 | * w32.c (_ANONYMOUS_UNION, _ANONYMOUS_STRUCT): Define only if undefined. |
| 405 | undefined. | ||
| 406 | 406 | ||
| 407 | 2014-05-26 Ken Brown <kbrown@cornell.edu> | 407 | 2014-05-26 Ken Brown <kbrown@cornell.edu> |
| 408 | 408 | ||
| @@ -491,7 +491,7 @@ | |||
| 491 | was moved to Fgarbage_collect. | 491 | was moved to Fgarbage_collect. |
| 492 | (Fgarbage_collect): Calculate the end address of the stack portion | 492 | (Fgarbage_collect): Calculate the end address of the stack portion |
| 493 | that needs to be examined by mark_stack, and pass that address to | 493 | that needs to be examined by mark_stack, and pass that address to |
| 494 | garbage_collect_1, which will pass it to mark_stack. See | 494 | garbage_collect_1, which will pass it to mark_stack. See |
| 495 | http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html | 495 | http://lists.gnu.org/archive/html/emacs-devel/2014-05/msg00270.html |
| 496 | for more details about the underlying problems. In particular, | 496 | for more details about the underlying problems. In particular, |
| 497 | this avoids dumping Emacs with the large hash-table whose value is | 497 | this avoids dumping Emacs with the large hash-table whose value is |
diff --git a/src/keyboard.c b/src/keyboard.c index 80b1f521310..c9cd222b110 100644 --- a/src/keyboard.c +++ b/src/keyboard.c | |||
| @@ -2434,7 +2434,6 @@ read_char (int commandflag, Lisp_Object map, | |||
| 2434 | 2434 | ||
| 2435 | retry: | 2435 | retry: |
| 2436 | 2436 | ||
| 2437 | reread = 0; | ||
| 2438 | if (CONSP (Vunread_post_input_method_events)) | 2437 | if (CONSP (Vunread_post_input_method_events)) |
| 2439 | { | 2438 | { |
| 2440 | c = XCAR (Vunread_post_input_method_events); | 2439 | c = XCAR (Vunread_post_input_method_events); |
| @@ -2448,9 +2447,12 @@ read_char (int commandflag, Lisp_Object map, | |||
| 2448 | && NILP (XCDR (c))) | 2447 | && NILP (XCDR (c))) |
| 2449 | c = XCAR (c); | 2448 | c = XCAR (c); |
| 2450 | 2449 | ||
| 2451 | reread = 1; | 2450 | reread = true; |
| 2452 | goto reread_first; | 2451 | goto reread_first; |
| 2453 | } | 2452 | } |
| 2453 | else | ||
| 2454 | reread = false; | ||
| 2455 | |||
| 2454 | 2456 | ||
| 2455 | if (CONSP (Vunread_command_events)) | 2457 | if (CONSP (Vunread_command_events)) |
| 2456 | { | 2458 | { |
| @@ -2459,17 +2461,13 @@ read_char (int commandflag, Lisp_Object map, | |||
| 2459 | c = XCAR (Vunread_command_events); | 2461 | c = XCAR (Vunread_command_events); |
| 2460 | Vunread_command_events = XCDR (Vunread_command_events); | 2462 | Vunread_command_events = XCDR (Vunread_command_events); |
| 2461 | 2463 | ||
| 2462 | reread = 1; | ||
| 2463 | |||
| 2464 | /* Undo what sit-for did when it unread additional keys | 2464 | /* Undo what sit-for did when it unread additional keys |
| 2465 | inside universal-argument. */ | 2465 | inside universal-argument. */ |
| 2466 | 2466 | ||
| 2467 | if (CONSP (c) | 2467 | if (CONSP (c) && EQ (XCAR (c), Qt)) |
| 2468 | && EQ (XCAR (c), Qt)) | ||
| 2469 | { | ||
| 2470 | reread = 0; | ||
| 2471 | c = XCDR (c); | 2468 | c = XCDR (c); |
| 2472 | } | 2469 | else |
| 2470 | reread = true; | ||
| 2473 | 2471 | ||
| 2474 | /* Undo what read_char_x_menu_prompt did when it unread | 2472 | /* Undo what read_char_x_menu_prompt did when it unread |
| 2475 | additional keys returned by Fx_popup_menu. */ | 2473 | additional keys returned by Fx_popup_menu. */ |
| @@ -2503,7 +2501,7 @@ read_char (int commandflag, Lisp_Object map, | |||
| 2503 | && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))) | 2501 | && (SYMBOLP (XCAR (c)) || INTEGERP (XCAR (c))) |
| 2504 | && NILP (XCDR (c))) | 2502 | && NILP (XCDR (c))) |
| 2505 | c = XCAR (c); | 2503 | c = XCAR (c); |
| 2506 | reread = 1; | 2504 | reread = true; |
| 2507 | goto reread_for_input_method; | 2505 | goto reread_for_input_method; |
| 2508 | } | 2506 | } |
| 2509 | 2507 | ||
| @@ -2844,6 +2842,11 @@ read_char (int commandflag, Lisp_Object map, | |||
| 2844 | { | 2842 | { |
| 2845 | c = XCAR (Vunread_command_events); | 2843 | c = XCAR (Vunread_command_events); |
| 2846 | Vunread_command_events = XCDR (Vunread_command_events); | 2844 | Vunread_command_events = XCDR (Vunread_command_events); |
| 2845 | |||
| 2846 | if (CONSP (c) && EQ (XCAR (c), Qt)) | ||
| 2847 | c = XCDR (c); | ||
| 2848 | else | ||
| 2849 | reread = true; | ||
| 2847 | } | 2850 | } |
| 2848 | 2851 | ||
| 2849 | /* Read something from current KBOARD's side queue, if possible. */ | 2852 | /* Read something from current KBOARD's side queue, if possible. */ |
| @@ -2897,8 +2900,8 @@ read_char (int commandflag, Lisp_Object map, | |||
| 2897 | { | 2900 | { |
| 2898 | c = read_decoded_event_from_main_queue (end_time, local_getcjmp, | 2901 | c = read_decoded_event_from_main_queue (end_time, local_getcjmp, |
| 2899 | prev_event, used_mouse_menu); | 2902 | prev_event, used_mouse_menu); |
| 2900 | if (NILP(c) && end_time && | 2903 | if (NILP (c) && end_time |
| 2901 | timespec_cmp (*end_time, current_timespec ()) <= 0) | 2904 | && timespec_cmp (*end_time, current_timespec ()) <= 0) |
| 2902 | { | 2905 | { |
| 2903 | goto exit; | 2906 | goto exit; |
| 2904 | } | 2907 | } |