Mercurial > vim
diff src/fold.c @ 45:e474bae3795f
updated for version 7.0027
author | vimboss |
---|---|
date | Fri, 31 Dec 2004 20:58:58 +0000 |
parents | f529edb9bab3 |
children | f713fc55bf7b |
line wrap: on
line diff
--- a/src/fold.c +++ b/src/fold.c @@ -2001,6 +2001,7 @@ foldtext_cleanup(str) char_u *cms_end; /* last part of the comment or NULL */ int cms_elen = 0; /* length of cms_end */ char_u *s; + char_u *p; int len; int did1 = FALSE; int did2 = FALSE; @@ -2033,25 +2034,34 @@ foldtext_cleanup(str) { len = 0; if (STRNCMP(s, curwin->w_p_fmr, foldstartmarkerlen) == 0) + len = foldstartmarkerlen; + else if (STRNCMP(s, foldendmarker, foldendmarkerlen) == 0) + len = foldendmarkerlen; + if (len > 0) { - len = foldstartmarkerlen; if (VIM_ISDIGIT(s[len])) ++len; - } - else if (STRNCMP(s, foldendmarker, foldendmarkerlen) == 0) - { - len = foldendmarkerlen; - if (VIM_ISDIGIT(s[len])) - ++len; + + /* May remove 'commentstring' start. Useful when it's a double + * quote and we already removed a double quote. */ + for (p = s; p > str && vim_iswhite(p[-1]); --p) + ; + if (p >= str + cms_slen + && STRNCMP(p - cms_slen, cms_start, cms_slen) == 0) + { + len += (s - p) + cms_slen; + s = p - cms_slen; + } } else if (cms_end != NULL) { - if (!did1 && STRNCMP(s, cms_start, cms_slen) == 0) + if (!did1 && cms_slen > 0 && STRNCMP(s, cms_start, cms_slen) == 0) { len = cms_slen; did1 = TRUE; } - else if (!did2 && STRNCMP(s, cms_end, cms_elen) == 0) + else if (!did2 && cms_elen > 0 + && STRNCMP(s, cms_end, cms_elen) == 0) { len = cms_elen; did2 = TRUE;