changeset 10147:ab78d1d2f5d7

(read_char): After auto-saving, redisplay. (read_key_sequence): Downcase undefined shifted fn keys.
author Richard M. Stallman <rms@gnu.org>
date Sun, 11 Dec 1994 11:36:13 +0000
parents 24032289479c
children 692093cc08d7
files src/keyboard.c
diffstat 1 files changed, 30 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/src/keyboard.c	Sun Dec 11 11:30:43 1994 +0000
+++ b/src/keyboard.c	Sun Dec 11 11:36:13 1994 +0000
@@ -1662,6 +1662,8 @@
       jmp_buf temp;
       save_getcjmp (temp);
       Fdo_auto_save (Qnil, Qnil);
+      /* Hooks can actually change some buffers in auto save.  */
+      redisplay ();
       restore_getcjmp (temp);
     }
 
@@ -1713,12 +1715,10 @@
 		 consing going on to make it worthwhile.  */
 	      if (!detect_input_pending ()
 		  && consing_since_gc > gc_cons_threshold / 2)
-		{
-		  Fgarbage_collect ();
-		  /* prepare_menu_bars isn't safe here, but it should
-		     also be unnecessary.  */
-		  redisplay ();
-		}
+		Fgarbage_collect ();
+	      /* prepare_menu_bars isn't safe here, but it should
+		 also be unnecessary.  */
+	      redisplay ();
 	    }
 	}
     }
@@ -5263,6 +5263,30 @@
 	  mock_input = t;
 	  goto replay_sequence;
 	}
+      /* If KEY is not defined in any of the keymaps,
+	 and cannot be part of a function key or translation,
+	 and is a shifted function key,
+	 use the corresponding unshifted function key instead.  */
+      if (first_binding == nmaps && ! function_key_possible
+	  && ! key_translation_possible
+	  && SYMBOLP (key))
+	{
+	  Lisp_Object breakdown;
+	  int modifiers;
+
+	  breakdown = parse_modifiers (key);
+	  modifiers = XINT (XCONS (XCONS (breakdown)->cdr)->car);
+	  if (modifiers & shift_modifier)
+	    {
+	      modifiers &= ~shift_modifier;
+	      key = apply_modifiers (make_number (modifiers),
+				     XCONS (breakdown)->car);
+
+	      keybuf[t - 1] = key;
+	      mock_input = t;
+	      goto replay_sequence;
+	    }
+	}
     }
 
   if (!dummyFlag)