diff --git a/src/testdir/test_let.vim b/src/testdir/test_let.vim
index 10670b0..4fa010b 100644
--- a/src/testdir/test_let.vim
+++ b/src/testdir/test_let.vim
@@ -152,6 +152,28 @@
   call assert_equal('ĀĒĪŌŪあいうえお', $a)
 endfunc
 
+func Test_let_heredoc_fails()
+  call assert_fails('let v =<< marker', 'E991:')
+
+  let text =<< trim END
+  func WrongSyntax()
+    let v =<< that there
+  endfunc
+  END
+  call writefile(text, 'XheredocFail')
+  call assert_fails('source XheredocFail', 'E126:')
+  call delete('XheredocFail')
+
+  let text =<< trim END
+  func MissingEnd()
+    let v =<< END
+  endfunc
+  END
+  call writefile(text, 'XheredocWrong')
+  call assert_fails('source XheredocWrong', 'E126:')
+  call delete('XheredocWrong')
+endfunc
+
 " Test for the setting a variable using the heredoc syntax
 func Test_let_heredoc()
   let var1 =<< END
@@ -193,15 +215,45 @@
   .
   call assert_equal(['  Line1'], var1)
 
-  call assert_fails('let v =<< marker', 'E991:')
-  call assert_fails('call WrongSyntax()', 'E488:')
-  call assert_fails('call MissingEnd()', 'E990:')
+  " ignore "endfunc"
+  let var1 =<< END
+something
 endfunc
+END
+  call assert_equal(['something', 'endfunc'], var1)
 
-func WrongSyntax()
-  let fail =<< that there
-endfunc
+  " ignore "endfunc" with trim
+  let var1 =<< trim END
+  something
+  endfunc
+  END
+  call assert_equal(['something', 'endfunc'], var1)
 
-func MissingEnd()
-  let fail =<< END
+  " ignore "python << xx"
+  let var1 =<<END
+something
+python << xx
+END
+  call assert_equal(['something', 'python << xx'], var1)
+
+  " ignore "python << xx" with trim
+  let var1 =<< trim END
+  something
+  python << xx
+  END
+  call assert_equal(['something', 'python << xx'], var1)
+
+  " ignore "append"
+  let var1 =<<
+something
+app
+.
+  call assert_equal(['something', 'app'], var1)
+
+  " ignore "append" with trim
+  let var1 =<< trim
+  something
+  app
+  .
+  call assert_equal(['something', 'app'], var1)
 endfunc
diff --git a/src/userfunc.c b/src/userfunc.c
index 4959b0d..763903f 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1979,6 +1979,7 @@
     int		indent;
     int		nesting;
     char_u	*skip_until = NULL;
+    char_u	*trimmed = NULL;
     dictitem_T	*v;
     funcdict_T	fudi;
     static int	func_nr = 0;	    /* number for nameless function */
@@ -2303,10 +2304,18 @@
 
 	if (skip_until != NULL)
 	{
-	    /* between ":append" and "." and between ":python <<EOF" and "EOF"
-	     * don't check for ":endfunc". */
-	    if (STRCMP(theline, skip_until) == 0)
-		VIM_CLEAR(skip_until);
+	    // Between ":append" and "." and between ":python <<EOF" and "EOF"
+	    // don't check for ":endfunc".
+	    if (trimmed == NULL
+			    || STRNCMP(theline, trimmed, STRLEN(trimmed)) == 0)
+	    {
+		p = trimmed == NULL ? theline : theline + STRLEN(trimmed);
+		if (STRCMP(p, skip_until) == 0)
+		{
+		    VIM_CLEAR(skip_until);
+		    VIM_CLEAR(trimmed);
+		}
+	    }
 	}
 	else
 	{
@@ -2406,6 +2415,30 @@
 		else
 		    skip_until = vim_strsave(p);
 	    }
+
+	    // Check for ":let v =<< [trim] EOF"
+	    arg = skipwhite(skiptowhite(p));
+	    arg = skipwhite(skiptowhite(arg));
+	    if (arg[0] == '=' && arg[1] == '<' && arg[2] =='<'
+		    && ((p[0] == 'l'
+			    && p[1] == 'e'
+			    && (!ASCII_ISALNUM(p[2])
+				|| (p[2] == 't' && !ASCII_ISALNUM(p[3]))))))
+	    {
+		// ":let v =<<" continues until a dot
+		p = skipwhite(arg + 3);
+		if (STRNCMP(p, "trim", 4) == 0)
+		{
+		    // Ignore leading white space.
+		    p = skipwhite(p + 4);
+		    trimmed = vim_strnsave(theline,
+					  (int)(skipwhite(theline) - theline));
+		}
+		if (*p == NUL)
+		    skip_until = vim_strsave((char_u *)".");
+		else
+		    skip_until = vim_strnsave(p, (int)(skiptowhite(p) - p));
+	    }
 	}
 
 	/* Add the line to the function. */
diff --git a/src/version.c b/src/version.c
index 042a8bc..2dd024f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -768,6 +768,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    1356,
+/**/
     1355,
 /**/
     1354,
