From 51d68cd82c8f77eef15a6d69b7ecb1f747d86831 Mon Sep 17 00:00:00 2001 From: YOSHIOKA Takuma Date: Fri, 5 Oct 2018 19:43:38 +0900 Subject: [PATCH] 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,` expands to `` 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,` expands to ``. --- autoload/emmet/lang/html.vim | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index 169122e..10eb9f8 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -252,7 +252,7 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort endif endfor endif - if has_key(settings.html.default_attributes, current.name) + if has_key(default_attributes, current.name) let current.name = substitute(current.name, ':.*$', '', '') endif break @@ -466,8 +466,12 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite let q = emmet#getResource(type, 'quote_char', '"') let ct = emmet#getResource(type, 'comment_type', 'both') let an = emmet#getResource(type, 'attribute_name', {}) - let empty_elements = emmet#getResource(type, 'empty_elements', settings.html.empty_elements) - let empty_element_suffix = emmet#getResource(type, 'empty_element_suffix', settings.html.empty_element_suffix) + let empty_elements = emmet#getResource(type, 'empty_elements', '') + 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') 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 for n in range(nc) 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 dr = 1 - elseif len(current_name) > 0 && stridx(','.settings.html.inline_elements.',', ','.current_name.',') == -1 - if nc > 1 || (len(child.name) > 0 && stridx(','.settings.html.inline_elements.',', ','.child.name.',') == -1) + elseif len(current_name) > 0 && stridx(','.inline_elements.',', ','.current_name.',') == -1 + if nc > 1 || (len(child.name) > 0 && stridx(','.inline_elements.',', ','.child.name.',') == -1) let str .= "\n" . indent let dr = 1 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 endfor 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" else let str .= '${cursor}' @@ -652,7 +656,7 @@ function! emmet#lang#html#toString(settings, current, type, inline, filters, ite let str .= "\n' 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" endif return str @@ -822,7 +826,7 @@ function! emmet#lang#html#balanceTag(flag) range abort let pos1 = searchpos(mx, 'bW') let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) 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') else let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '', 'nW') @@ -855,7 +859,7 @@ function! emmet#lang#html#balanceTag(flag) range abort endif let content = matchstr(getline(pos1[0])[pos1[1]-1:], mx) 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') else let pos2 = searchpairpos('<' . tag_name . '[^>]*>', '', '', 'nW')