summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/edit.c7
-rw-r--r--src/getchar.c5
-rw-r--r--src/version.c2
3 files changed, 10 insertions, 4 deletions
diff --git a/src/edit.c b/src/edit.c
index e95ddddc2..c8320a6e2 100644
--- a/src/edit.c
+++ b/src/edit.c
@@ -1455,13 +1455,16 @@ normalchar:
Insstart_blank_vcol = get_nolist_virtcol();
}
- if (vim_iswordc(c) || !echeck_abbr(
+ /* Insert a normal character and check for abbreviations on a
+ * special character. Let CTRL-] expand abbreviations without
+ * inserting it. */
+ if (vim_iswordc(c) || (!echeck_abbr(
#ifdef FEAT_MBYTE
/* Add ABBR_OFF for characters above 0x100, this is
* what check_abbr() expects. */
(has_mbyte && c >= 0x100) ? (c + ABBR_OFF) :
#endif
- c))
+ c) && c != Ctrl_RSB))
{
insert_special(c, FALSE, FALSE);
#ifdef FEAT_RIGHTLEFT
diff --git a/src/getchar.c b/src/getchar.c
index dc7d76847..606d9a2c6 100644
--- a/src/getchar.c
+++ b/src/getchar.c
@@ -4352,8 +4352,9 @@ check_abbr(c, ptr, col, mincol)
if (typebuf.tb_no_abbr_cnt) /* abbrev. are not recursive */
return FALSE;
- if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0)
- /* no remapping implies no abbreviation */
+
+ /* no remapping implies no abbreviation, except for CTRL-] */
+ if ((KeyNoremap & (RM_NONE|RM_SCRIPT)) != 0 && c != Ctrl_RSB)
return FALSE;
/*
diff --git a/src/version.c b/src/version.c
index 8bcdd3075..d012d9909 100644
--- a/src/version.c
+++ b/src/version.c
@@ -715,6 +715,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 489,
+/**/
488,
/**/
487,