From ea47fca11eec5b8786cc420c1d12a1786a563baa Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Mon, 14 Dec 2015 00:39:47 +0900 Subject: [PATCH] fix implicit tag expansion. Close #307 --- autoload/emmet/lang/html.vim | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index 8e20af7..5a2c351 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -60,6 +60,13 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort let settings = emmet#getSettings() let indent = emmet#getIndentation(type) + let pmap = { + \ 'html': 'body', + \ 'table': 'tr', + \ 'tr': 'td', + \ 'ul': 'li', + \ 'ol': 'li', + \} " try 'foo' to (foo-x) let rabbr = emmet#getExpandos(type, abbr) @@ -91,7 +98,7 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort endif if tag_name =~# '^#' let attributes = tag_name . attributes - let tag_name = 'div' + let tag_name = '' endif if tag_name =~# '[^!]!$' let tag_name = tag_name[:-2] @@ -99,11 +106,19 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort endif if tag_name =~# '^\.' let attributes = tag_name . attributes - let tag_name = 'div' + let tag_name = '' endif if tag_name =~# '^\[.*\]$' let attributes = tag_name . attributes - let tag_name = 'div' + let tag_name = '' + endif + if empty(tag_name) + let pname = len(parent.child) > 0 ? parent.child[0].name : '' + if !empty(pname) && has_key(pmap, pname) + let tag_name = pmap[pname] + else + let tag_name = 'div' + endif endif let basedirect = basevalue[1] ==# '-' ? -1 : 1 let basevalue = 0 + abs(basevalue[1:])