summaryrefslogtreecommitdiffstats
path: root/src/ex_cmds2.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2018-09-11 22:37:29 +0200
committerBram Moolenaar <Bram@vim.org>2018-09-11 22:37:29 +0200
commit67f8ab829911c7901c534ef2bf19cc34b622936f (patch)
tree6d56b95950cb18a0261c0e72d685b612dbb246db /src/ex_cmds2.c
parent25328e39d2a6e3ded82bf282a2e248ce7209f1b4 (diff)
patch 8.1.0369: continuation lines cannot contain commentsv8.1.0369
Problem: Continuation lines cannot contain comments. Solution: Support using "\ .
Diffstat (limited to 'src/ex_cmds2.c')
-rw-r--r--src/ex_cmds2.c37
1 files changed, 22 insertions, 15 deletions
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index 28245d1781..c0cb87f70a 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -4864,17 +4864,21 @@ getsourceline(int c UNUSED, void *cookie, int indent UNUSED)
/* compensate for the one line read-ahead */
--sourcing_lnum;
- /* Get the next line and concatenate it when it starts with a
- * backslash. We always need to read the next line, keep it in
- * sp->nextline. */
+ // Get the next line and concatenate it when it starts with a
+ // backslash. We always need to read the next line, keep it in
+ // sp->nextline.
+ /* Also check for a comment in between continuation lines: "\ */
sp->nextline = get_one_sourceline(sp);
- if (sp->nextline != NULL && *(p = skipwhite(sp->nextline)) == '\\')
+ if (sp->nextline != NULL
+ && (*(p = skipwhite(sp->nextline)) == '\\'
+ || (p[0] == '"' && p[1] == '\\' && p[2] == ' ')))
{
garray_T ga;
ga_init2(&ga, (int)sizeof(char_u), 400);
ga_concat(&ga, line);
- ga_concat(&ga, p + 1);
+ if (*p == '\\')
+ ga_concat(&ga, p + 1);
for (;;)
{
vim_free(sp->nextline);
@@ -4882,18 +4886,21 @@ getsourceline(int c UNUSED, void *cookie, int indent UNUSED)
if (sp->nextline == NULL)
break;
p = skipwhite(sp->nextline);
- if (*p != '\\')
- break;
- /* Adjust the growsize to the current length to speed up
- * concatenating many lines. */
- if (ga.ga_len > 400)
+ if (*p == '\\')
{
- if (ga.ga_len > 8000)
- ga.ga_growsize = 8000;
- else
- ga.ga_growsize = ga.ga_len;
+ // Adjust the growsize to the current length to speed up
+ // concatenating many lines.
+ if (ga.ga_len > 400)
+ {
+ if (ga.ga_len > 8000)
+ ga.ga_growsize = 8000;
+ else
+ ga.ga_growsize = ga.ga_len;
+ }
+ ga_concat(&ga, p + 1);
}
- ga_concat(&ga, p + 1);
+ else if (p[0] != '"' || p[1] != '\\' || p[2] != ' ')
+ break;
}
ga_append(&ga, NUL);
vim_free(line);