{
int did_inc = FALSE;
+ // No mapping after modifier has been read, using an input method
+ // and when a popup window has disabled mapping.
if (mod_mask
#if defined(FEAT_XIM) && defined(FEAT_GUI_GTK)
|| im_is_preediting()
#endif
)
{
- // no mapping after modifier has been read
++no_mapping;
++allow_keys;
- did_inc = TRUE; // mod_mask may change value
+ // mod_mask value may change, remember we did the increment
+ did_inc = TRUE;
}
c = vgetorpeek(TRUE);
if (did_inc)
/*
* Like safe_vgetc(), but loop to handle K_IGNORE.
* Also ignore scrollbar events.
+ * Does not handle bracketed paste - do not use the result for commands.
*/
- int
-plain_vgetc(void)
+ static int
+plain_vgetc_nopaste(void)
{
int c;
while (c == K_IGNORE
|| c == K_VER_SCROLLBAR || c == K_HOR_SCROLLBAR
|| c == K_MOUSEMOVE);
+ return c;
+}
+
+/*
+ * Like safe_vgetc(), but loop to handle K_IGNORE.
+ * Also ignore scrollbar events.
+ */
+ int
+plain_vgetc(void)
+{
+ int c = plain_vgetc_nopaste();
if (c == K_PS)
// Only handle the first pasted character. Drop the rest, since we
{
if (argvars[0].v_type == VAR_UNKNOWN)
// getchar(): blocking wait.
- n = plain_vgetc();
+ n = plain_vgetc_nopaste();
else if (tv_get_bool_chk(&argvars[0], &error))
// getchar(1): only check if char avail
n = vpeekc_any();