summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2017-09-05 22:20:46 +0200
committerBram Moolenaar <Bram@vim.org>2017-09-05 22:20:46 +0200
commit3971905bac0fe7e7519b35b1e558b4f1de55708d (patch)
treec56cf0e879a0e52426e349e693a37507744a2eb8
parent3d8d2c7ca5dda5bfd62c6d5df6659cf62e960a3d (diff)
downloadvim-git-3971905bac0fe7e7519b35b1e558b4f1de55708d.tar.gz
patch 8.0.1060: when imstyle is one, mapping <Left> breaks preeditingv8.0.1060
Problem: When imstyle is one, mapping <Left> breaks preediting. Solution: Pass though preediting key-events. (Yasuhiro Matsumoto, closes #2064, closes #2063)
-rw-r--r--src/getchar.c7
-rw-r--r--src/mbyte.c6
-rw-r--r--src/version.c2
3 files changed, 13 insertions, 2 deletions
diff --git a/src/getchar.c b/src/getchar.c
index 78bd39d81..63d6542bf 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -1598,8 +1598,13 @@ vgetc(void)
{
int did_inc = FALSE;
- if (mod_mask) /* no mapping after modifier has been read */
+ 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 */
diff --git a/src/mbyte.c b/src/mbyte.c
index 617a97d0e..f279bdef7 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -4964,7 +4964,11 @@ im_delete_preedit(void)
return;
}
- if (State & NORMAL)
+ if (State & NORMAL
+#ifdef FEAT_TERMINAL
+ && !term_use_loop()
+#endif
+ )
{
im_preedit_cursor = 0;
return;
diff --git a/src/version.c b/src/version.c
index 61b5b94dd..86a170b73 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1060,
+/**/
1059,
/**/
1058,