2 Commits

Author SHA1 Message Date
YOSHIOKA Takuma
74d582b66e Merge 51d68cd82c into 6c511a8d7d 2024-12-02 07:21:43 +00:00
YOSHIOKA Takuma
51d68cd82c 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>`.
2018-10-05 20:10:56 +09:00
2 changed files with 15 additions and 11 deletions

View File

@@ -430,7 +430,7 @@ function! emmet#getFileType(...) abort
endfor endfor
endif endif
return empty(type) ? 'html' : type return len(type) == 0 ? 'html' : type
endfunction endfunction
function! emmet#getDollarExprs(expand) abort function! emmet#getDollarExprs(expand) abort

View File

@@ -269,7 +269,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
@@ -483,8 +483,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)
@@ -632,11 +636,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
@@ -651,7 +655,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}'
@@ -669,7 +673,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
@@ -838,7 +842,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')
@@ -871,7 +875,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')