From 26459d2c84de75581a073232e8c01838e31592c3 Mon Sep 17 00:00:00 2001 From: leafOfTree Date: Wed, 25 Sep 2019 14:22:16 +0800 Subject: [PATCH] Fix incorrect fold for template --- ftplugin/vue/fold.vim | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/ftplugin/vue/fold.vim b/ftplugin/vue/fold.vim index 243336c..1398c37 100644 --- a/ftplugin/vue/fold.vim +++ b/ftplugin/vue/fold.vim @@ -54,39 +54,43 @@ function! GetVueFold(lnum) let prev_line = getline(a:lnum - 1) endif - " Empty lines + " Handle empty lines if this_line =~ s:empty_line return -1 endif - " Vue tag + " Handle start/end tags if this_line =~ s:vue_tag_start return '>1' - elseif this_line =~ s:vue_tag_end - return '<1' + endif + if this_line =~ s:vue_tag_end + " If return '<1', fold will get incorrect with prev line + return 1 endif - " Use (indentLevel + 1) as fold level + " Fold by indent let this_indent = s:IndentLevel(a:lnum) let next_indent = s:IndentLevel(s:NextNonBlankLine(a:lnum)) if a:lnum > 1 let prev_indent = s:IndentLevel(a:lnum - 1) - if (this_line =~ s:block_end) && (this_indent < prev_indent) + if this_indent < prev_indent return prev_indent endif endif if this_indent >= next_indent return this_indent - elseif this_indent < next_indent + endif + + if this_indent < next_indent return '>'.next_indent endif endfunction function! s:IndentLevel(lnum) - " Add 1 to enable vue tags to fold + " Add 1 to indentLevel, so start/end tags' can fold properly return indent(a:lnum) / &shiftwidth + 1 endfunction