patch 8.0.1090: cannot get the text under the cursor like v:beval_text

Problem:    cannot get the text under the cursor like v:beval_text
Solution:   Add <cexpr>.
diff --git a/src/ex_docmd.c b/src/ex_docmd.c
index 33f5444..c290328 100644
--- a/src/ex_docmd.c
+++ b/src/ex_docmd.c
@@ -10650,31 +10650,33 @@
 		    "%",
 #define SPEC_PERC   0
 		    "#",
-#define SPEC_HASH   1
+#define SPEC_HASH   (SPEC_PERC + 1)
 		    "<cword>",		/* cursor word */
-#define SPEC_CWORD  2
+#define SPEC_CWORD  (SPEC_HASH + 1)
 		    "<cWORD>",		/* cursor WORD */
-#define SPEC_CCWORD 3
+#define SPEC_CCWORD (SPEC_CWORD + 1)
+		    "<cexpr>",		/* expr under cursor */
+#define SPEC_CEXPR  (SPEC_CCWORD + 1)
 		    "<cfile>",		/* cursor path name */
-#define SPEC_CFILE  4
+#define SPEC_CFILE  (SPEC_CEXPR + 1)
 		    "<sfile>",		/* ":so" file name */
-#define SPEC_SFILE  5
+#define SPEC_SFILE  (SPEC_CFILE + 1)
 		    "<slnum>",		/* ":so" file line number */
-#define SPEC_SLNUM  6
+#define SPEC_SLNUM  (SPEC_SFILE + 1)
 #ifdef FEAT_AUTOCMD
 		    "<afile>",		/* autocommand file name */
-# define SPEC_AFILE 7
+# define SPEC_AFILE (SPEC_SLNUM + 1)
 		    "<abuf>",		/* autocommand buffer number */
-# define SPEC_ABUF  8
+# define SPEC_ABUF  (SPEC_AFILE + 1)
 		    "<amatch>",		/* autocommand match name */
-# define SPEC_AMATCH 9
+# define SPEC_AMATCH (SPEC_ABUF + 1)
 #endif
 #ifdef FEAT_CLIENTSERVER
 		    "<client>"
 # ifdef FEAT_AUTOCMD
-#  define SPEC_CLIENT 10
+#  define SPEC_CLIENT (SPEC_AMATCH + 1)
 # else
-#  define SPEC_CLIENT 7
+#  define SPEC_CLIENT (SPEC_SLNUM + 1)
 # endif
 #endif
     };
@@ -10762,10 +10764,13 @@
     /*
      * word or WORD under cursor
      */
-    if (spec_idx == SPEC_CWORD || spec_idx == SPEC_CCWORD)
+    if (spec_idx == SPEC_CWORD || spec_idx == SPEC_CCWORD
+						     || spec_idx == SPEC_CEXPR)
     {
-	resultlen = find_ident_under_cursor(&result, spec_idx == SPEC_CWORD ?
-				      (FIND_IDENT|FIND_STRING) : FIND_STRING);
+	resultlen = find_ident_under_cursor(&result,
+		spec_idx == SPEC_CWORD ? (FIND_IDENT | FIND_STRING)
+	      : spec_idx == SPEC_CEXPR ? (FIND_IDENT | FIND_STRING | FIND_EVAL)
+	      : FIND_STRING);
 	if (resultlen == 0)
 	{
 	    *errormsg = (char_u *)"";
diff --git a/src/testdir/test_normal.vim b/src/testdir/test_normal.vim
index 21d6aa9..d33723b 100644
--- a/src/testdir/test_normal.vim
+++ b/src/testdir/test_normal.vim
@@ -389,10 +389,22 @@
   call setline(1, ['1', 'ifooar,,cbar'])
   2
   norm! $
-  let a=expand('<cword>')
-  let b=expand('<cWORD>')
-  call assert_equal('cbar', a)
-  call assert_equal('ifooar,,cbar', b)
+  call assert_equal('cbar', expand('<cword>'))
+  call assert_equal('ifooar,,cbar', expand('<cWORD>'))
+
+  call setline(1, ['prx = list[idx];'])
+  1
+  let expected = ['', 'prx', 'prx', 'prx',
+	\ 'list', 'list', 'list', 'list', 'list', 'list', 'list',
+	\ 'idx', 'idx', 'idx', 'idx',
+	\ 'list[idx]',
+	\ '];',
+	\ ]
+  for i in range(1, 16)
+    exe 'norm ' . i . '|'
+    call assert_equal(expected[i], expand('<cexpr>'), 'i == ' . i)
+  endfor
+
   " clean up
   bw!
 endfunc
diff --git a/src/version.c b/src/version.c
index b10216f..b105496 100644
--- a/src/version.c
+++ b/src/version.c
@@ -770,6 +770,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1090,
+/**/
     1089,
 /**/
     1088,