mirror of
https://github.com/mattn/emmet-vim.git
synced 2025-12-09 03:54:47 +08:00
Use empty string and 0 for HTML-like type, not HTML default
In HTML-like type, `settings.html.*` is used as default setting if `settings.(type).*` is not set. But in HTML type and types extending HTML, `settings.html` is merged into `settings.(type)` and no need to use `settings.html` as explicit default. Before this change, `param<C-y>,` expands to `<param name="" value=""></param>` because `xml` type extends `html` by default, and `html` has default attributes for `param` element. With this change and `g:user_emmet_settings.xml.extends = ""`, users can disable HTML defaults in XML files. So then `param<C-y>,` expands to `<param></param>`.
This commit is contained in:
@@ -252,7 +252,7 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort
|
|||||||
endif
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
if has_key(settings.html.default_attributes, current.name)
|
if has_key(default_attributes, current.name)
|
||||||
let current.name = substitute(current.name, ':.*$', '', '')
|
let current.name = substitute(current.name, ':.*$', '', '')
|
||||||
endif
|
endif
|
||||||
break
|
break
|
||||||
@@ -466,8 +466,12 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
let q = emmet#getResource(type, 'quote_char', '"')
|
let q = emmet#getResource(type, 'quote_char', '"')
|
||||||
let ct = emmet#getResource(type, 'comment_type', 'both')
|
let ct = emmet#getResource(type, 'comment_type', 'both')
|
||||||
let an = emmet#getResource(type, 'attribute_name', {})
|
let an = emmet#getResource(type, 'attribute_name', {})
|
||||||
let empty_elements = emmet#getResource(type, 'empty_elements', settings.html.empty_elements)
|
let empty_elements = emmet#getResource(type, 'empty_elements', '')
|
||||||
let empty_element_suffix = emmet#getResource(type, 'empty_element_suffix', settings.html.empty_element_suffix)
|
let empty_element_suffix = emmet#getResource(type, 'empty_element_suffix', '')
|
||||||
|
let inline_elements = emmet#getResource(type, 'inline_elements', '')
|
||||||
|
let block_elements = emmet#getResource(type, 'block_elements', '')
|
||||||
|
let indent_blockelement = emmet#getResource(type, 'indent_blockelement', '')
|
||||||
|
let block_all_childless = emmet#getResource(type, 'block_all_childless', 0)
|
||||||
|
|
||||||
if emmet#useFilter(filters, 'haml')
|
if emmet#useFilter(filters, 'haml')
|
||||||
return emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent)
|
return emmet#lang#haml#toString(settings, current, type, inline, filters, itemno, indent)
|
||||||
@@ -615,11 +619,11 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
if nc > 0
|
if nc > 0
|
||||||
for n in range(nc)
|
for n in range(nc)
|
||||||
let child = current.child[n]
|
let child = current.child[n]
|
||||||
if child.multiplier > 1 || (child.multiplier == 1 && len(child.child) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1) || settings.html.block_all_childless
|
if child.multiplier > 1 || (child.multiplier == 1 && len(child.child) > 0 && stridx(','.inline_elements.',', ','.current_name.',') == -1) || block_all_childless
|
||||||
let str .= "\n" . indent
|
let str .= "\n" . indent
|
||||||
let dr = 1
|
let dr = 1
|
||||||
elseif len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1
|
elseif len(current_name) > 0 && stridx(','.inline_elements.',', ','.current_name.',') == -1
|
||||||
if nc > 1 || (len(child.name) > 0 && stridx(','.settings.html.inline_elements.',', ','.child.name.',') == -1)
|
if nc > 1 || (len(child.name) > 0 && stridx(','.inline_elements.',', ','.child.name.',') == -1)
|
||||||
let str .= "\n" . indent
|
let str .= "\n" . indent
|
||||||
let dr = 1
|
let dr = 1
|
||||||
elseif current.multiplier == 1 && nc == 1 && len(child.name) == 0
|
elseif current.multiplier == 1 && nc == 1 && len(child.name) == 0
|
||||||
@@ -634,7 +638,7 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
let str .= inner
|
let str .= inner
|
||||||
endfor
|
endfor
|
||||||
else
|
else
|
||||||
if settings.html.indent_blockelement && len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1 || settings.html.block_all_childless
|
if indent_blockelement && len(current_name) > 0 && stridx(','.inline_elements.',', ','.current_name.',') == -1 || block_all_childless
|
||||||
let str .= "\n" . indent . '${cursor}' . "\n"
|
let str .= "\n" . indent . '${cursor}' . "\n"
|
||||||
else
|
else
|
||||||
let str .= '${cursor}'
|
let str .= '${cursor}'
|
||||||
@@ -652,7 +656,7 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite
|
|||||||
let str .= "\n<!-- /" . comment . ' -->'
|
let str .= "\n<!-- /" . comment . ' -->'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
if len(current_name) > 0 && current.multiplier > 0 || stridx(','.settings.html.block_elements.',', ','.current_name.',') != -1
|
if len(current_name) > 0 && current.multiplier > 0 || stridx(','.block_elements.',', ','.current_name.',') != -1
|
||||||
let str .= "\n"
|
let str .= "\n"
|
||||||
endif
|
endif
|
||||||
return str
|
return str
|
||||||
@@ -822,7 +826,7 @@ function! emmet#lang#html#balanceTag(flag) range abort
|
|||||||
let pos1 = searchpos(mx, 'bW')
|
let pos1 = searchpos(mx, 'bW')
|
||||||
let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)
|
let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)
|
||||||
let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze')
|
let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze')
|
||||||
if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1
|
if stridx(','.empty_elements.',', ','.tag_name.',') != -1
|
||||||
let pos2 = searchpos('>', 'nW')
|
let pos2 = searchpos('>', 'nW')
|
||||||
else
|
else
|
||||||
let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '</'. tag_name . '\zs>', 'nW')
|
let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '</'. tag_name . '\zs>', 'nW')
|
||||||
@@ -855,7 +859,7 @@ function! emmet#lang#html#balanceTag(flag) range abort
|
|||||||
endif
|
endif
|
||||||
let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)
|
let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx)
|
||||||
let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze')
|
let tag_name = matchstr(content, '^<\zs[a-zA-Z0-9:_\-]*\ze')
|
||||||
if stridx(','.settings.html.empty_elements.',', ','.tag_name.',') != -1
|
if stridx(','.empty_elements.',', ','.tag_name.',') != -1
|
||||||
let pos2 = searchpos('>', 'nW')
|
let pos2 = searchpos('>', 'nW')
|
||||||
else
|
else
|
||||||
let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '</'. tag_name . '\zs>', 'nW')
|
let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '</'. tag_name . '\zs>', 'nW')
|
||||||
|
|||||||
Reference in New Issue
Block a user