aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/keyboard.c36
1 files changed, 30 insertions, 6 deletions
diff --git a/src/keyboard.c b/src/keyboard.c
index 4b1c6319737..2819328c4e3 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -1662,6 +1662,8 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu)
1662 jmp_buf temp; 1662 jmp_buf temp;
1663 save_getcjmp (temp); 1663 save_getcjmp (temp);
1664 Fdo_auto_save (Qnil, Qnil); 1664 Fdo_auto_save (Qnil, Qnil);
1665 /* Hooks can actually change some buffers in auto save. */
1666 redisplay ();
1665 restore_getcjmp (temp); 1667 restore_getcjmp (temp);
1666 } 1668 }
1667 1669
@@ -1713,12 +1715,10 @@ read_char (commandflag, nmaps, maps, prev_event, used_mouse_menu)
1713 consing going on to make it worthwhile. */ 1715 consing going on to make it worthwhile. */
1714 if (!detect_input_pending () 1716 if (!detect_input_pending ()
1715 && consing_since_gc > gc_cons_threshold / 2) 1717 && consing_since_gc > gc_cons_threshold / 2)
1716 { 1718 Fgarbage_collect ();
1717 Fgarbage_collect (); 1719 /* prepare_menu_bars isn't safe here, but it should
1718 /* prepare_menu_bars isn't safe here, but it should 1720 also be unnecessary. */
1719 also be unnecessary. */ 1721 redisplay ();
1720 redisplay ();
1721 }
1722 } 1722 }
1723 } 1723 }
1724 } 1724 }
@@ -5263,6 +5263,30 @@ read_key_sequence (keybuf, bufsize, prompt)
5263 mock_input = t; 5263 mock_input = t;
5264 goto replay_sequence; 5264 goto replay_sequence;
5265 } 5265 }
5266 /* If KEY is not defined in any of the keymaps,
5267 and cannot be part of a function key or translation,
5268 and is a shifted function key,
5269 use the corresponding unshifted function key instead. */
5270 if (first_binding == nmaps && ! function_key_possible
5271 && ! key_translation_possible
5272 && SYMBOLP (key))
5273 {
5274 Lisp_Object breakdown;
5275 int modifiers;
5276
5277 breakdown = parse_modifiers (key);
5278 modifiers = XINT (XCONS (XCONS (breakdown)->cdr)->car);
5279 if (modifiers & shift_modifier)
5280 {
5281 modifiers &= ~shift_modifier;
5282 key = apply_modifiers (make_number (modifiers),
5283 XCONS (breakdown)->car);
5284
5285 keybuf[t - 1] = key;
5286 mock_input = t;
5287 goto replay_sequence;
5288 }
5289 }
5266 } 5290 }
5267 5291
5268 if (!dummyFlag) 5292 if (!dummyFlag)