diff options
Diffstat (limited to 'src/fold.c')
-rw-r--r-- | src/fold.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/fold.c b/src/fold.c index a186bef4d..826ad5c8d 100644 --- a/src/fold.c +++ b/src/fold.c @@ -1760,6 +1760,7 @@ foldAddMarker(linenr_T lnum, char_u *marker, int markerlen) int line_len; char_u *newline; char_u *p = (char_u *)strstr((char *)curbuf->b_p_cms, "%s"); + int line_is_comment = FALSE; /* Allocate a new line: old-line + 'cms'-start + marker + 'cms'-end */ line = ml_get(lnum); @@ -1767,11 +1768,16 @@ foldAddMarker(linenr_T lnum, char_u *marker, int markerlen) if (u_save(lnum - 1, lnum + 1) == OK) { +#if defined(FEAT_COMMENTS) + /* Check if the line ends with an unclosed comment */ + (void)skip_comment(line, FALSE, FALSE, &line_is_comment); +#endif newline = alloc((unsigned)(line_len + markerlen + STRLEN(cms) + 1)); if (newline == NULL) return; STRCPY(newline, line); - if (p == NULL) + /* Append the marker to the end of the line */ + if (p == NULL || line_is_comment) vim_strncpy(newline + line_len, marker, markerlen); else { |