patch 8.1.1723: heredoc assignment has no room for new features

Problem:    Heredoc assignment has no room for new features. (FUJIWARA Takuya)
Solution:   Require the marker does not start with a lower case character.
            (closes #4705)
diff --git a/src/eval.c b/src/eval.c
index d633f45..5a4ed67 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -1283,7 +1283,7 @@
 	text_indent_len = -1;
     }
 
-    // The marker is the next word.  Default marker is "."
+    // The marker is the next word.
     if (*cmd != NUL && *cmd != '"')
     {
 	marker = skipwhite(cmd);
@@ -1294,9 +1294,17 @@
 	    return NULL;
 	}
 	*p = NUL;
+	if (vim_islower(*marker))
+	{
+	    emsg(_("E221: Marker cannot start with lower case letter"));
+	    return NULL;
+	}
     }
     else
-	marker = (char_u *)".";
+    {
+	emsg(_("E172: Missing marker"));
+	return NULL;
+    }
 
     l = list_alloc();
     if (l == NULL)
diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index f9c0d0d..3690082 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -164,14 +164,28 @@
   call assert_fails('source XheredocFail', 'E126:')
   call delete('XheredocFail')
 
-  let text =<< trim END
+  let text =<< trim CodeEnd
   func MissingEnd()
     let v =<< END
   endfunc
-  END
+  CodeEnd
   call writefile(text, 'XheredocWrong')
   call assert_fails('source XheredocWrong', 'E126:')
   call delete('XheredocWrong')
+
+  let text =<< trim TEXTend
+    let v =<< " comment
+  TEXTend
+  call writefile(text, 'XheredocNoMarker')
+  call assert_fails('source XheredocNoMarker', 'E172:')
+  call delete('XheredocNoMarker')
+
+  let text =<< trim TEXTend
+    let v =<< text
+  TEXTend
+  call writefile(text, 'XheredocBadMarker')
+  call assert_fails('source XheredocBadMarker', 'E221:')
+  call delete('XheredocBadMarker')
 endfunc
 
 " Test for the setting a variable using the heredoc syntax
@@ -184,9 +198,9 @@
 
   call assert_equal(["Some sample text", "\tText with indent", "  !@#$%^&*()-+_={}|[]\\~`:\";'<>?,./"], var1)
 
-  let var2 =<<
+  let var2 =<< XXX
 Editor
-.
+XXX
   call assert_equal(['Editor'], var2)
 
   let var3 =<<END
@@ -218,9 +232,9 @@
   !!!
   call assert_equal(['Line1', ' line2', "\tLine3", '!!!',], var1)
 
-  let var1 =<< trim
+  let var1 =<< trim XX
     Line1
-  .
+  XX
   call assert_equal(['Line1'], var1)
 
   " ignore "endfunc"
@@ -260,16 +274,16 @@
   call assert_equal(['something', 'python << xx'], var1)
 
   " ignore "append"
-  let var1 =<<
+  let var1 =<< E
 something
 app
-.
+E
   call assert_equal(['something', 'app'], var1)
 
   " ignore "append" with trim
-  let var1 =<< trim
+  let var1 =<< trim END
   something
   app
-  .
+  END
   call assert_equal(['something', 'app'], var1)
 endfunc
diff --git a/src/version.c b/src/version.c
index 36a7779..5dc4d0c 100644
--- a/src/version.c
+++ b/src/version.c
@@ -778,6 +778,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1723,
+/**/
     1722,
 /**/
     1721,