Improve multiple line tag syntax and custom tag indent

This commit is contained in:
leafOfTree
2021-08-04 11:14:15 +08:00
parent 44b0071e2d
commit 0e68102487
2 changed files with 11 additions and 6 deletions

View File

@@ -86,8 +86,8 @@ function! s:GetIndentByContext(tag, syntax)
let prevline = getline(s:PrevNonBlankNonComment(v:lnum)) let prevline = getline(s:PrevNonBlankNonComment(v:lnum))
let curline = getline(v:lnum) let curline = getline(v:lnum)
if a:tag == 'view' if a:tag != 'template' && a:syntax == 'html'
" Support 'view' tag from mini-program " Set indent to 0 for custom tag with 'html' syntax
if curline =~ s:block_tag && empty(prevline) if curline =~ s:block_tag && empty(prevline)
let ind = 0 let ind = 0
endif endif
@@ -99,7 +99,8 @@ function! s:GetIndentByContext(tag, syntax)
endif endif
endif endif
else else
" When not in <template>, set block tags indent to 0 " When not in <template> and not 'html'
" Set indent to 0 if current or prev line is block tag
if curline =~ s:block_tag || prevline =~ s:block_tag if curline =~ s:block_tag || prevline =~ s:block_tag
let ind = 0 let ind = 0
endif endif

View File

@@ -110,16 +110,20 @@ function! s:SetSyntax(block, syntax, has_lang)
let name = s:GetSynatxName(block, syntax) let name = s:GetSynatxName(block, syntax)
if has_lang if has_lang
let lang_name = s:GetSyntaxLangName(syntax) let lang_name = s:GetSyntaxLangName(syntax)
let lang = 'lang=["'']'.lang_name.'["''][^>]*' let lang = 'lang=["'']'.lang_name.'["'']'
else else
let lang = '' let lang = ''
endif endif
let start = '^<'.block.'[^>]*'.lang.'>' let start = '^<'.block.'[^>]*'.lang
let end_tag = '</'.block.'>' let end_tag = '</'.block.'>'
let end = '^'.end_tag let end = '^'.end_tag
let syntax_group = s:GetGroupNameForHighlight(syntax) let syntax_group = s:GetGroupNameForHighlight(syntax)
" Block like
" <script lang="ts">
" ...
" </script>
execute 'syntax region '.name.' fold ' execute 'syntax region '.name.' fold '
\.' start=+'.start.'+' \.' start=+'.start.'+'
\.' end=+'.end.'+' \.' end=+'.end.'+'
@@ -128,7 +132,7 @@ function! s:SetSyntax(block, syntax, has_lang)
execute 'syntax sync match vueSync groupthere '.name.' +'.start.'+' execute 'syntax sync match vueSync groupthere '.name.' +'.start.'+'
execute 'syntax sync match vueSync groupthere NONE +'.end.'+' execute 'syntax sync match vueSync groupthere NONE +'.end.'+'
" Support block like <script src="...">...</script> " Block like <script src="...">...</script>
let oneline = start.'.*'.end_tag let oneline = start.'.*'.end_tag
execute 'syntax match '.name.' fold ' execute 'syntax match '.name.' fold '
\.' +'.oneline.'+' \.' +'.oneline.'+'