diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index 5e374f7..61c28d3 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -720,11 +720,11 @@ endfunction function! emmet#lang#html#parseTag(tag) abort let current = emmet#newNode() - let mx = '<\([a-zA-Z][a-zA-Z0-9]*\)\(\%(\s[a-zA-Z][a-zA-Z0-9]\+=\%([^"'' \t]\+\|"[^"]\{-}"\|''[^'']\{-}''\)\s*\)*\)\(/\{0,1}\)>' + let mx = '<\([a-zA-Z][a-zA-Z0-9]*\)\(\%(\s[a-zA-Z][a-zA-Z0-9]\+=\?\%([^"'' \t]\+\|"[^"]\{-}"\|''[^'']\{-}''\)\s*\)*\)\(/\{0,1}\)>' let match = matchstr(a:tag, mx) let current.name = substitute(match, mx, '\1', 'i') let attrs = substitute(match, mx, '\2', 'i') - let mx = '\([a-zA-Z0-9]\+\)=\%(\([^"'' \t]\+\)\|"\([^"]\{-}\)"\|''\([^'']\{-}\)''\)' + let mx = '\([a-zA-Z0-9]\+\)\(\(=[^"'' \t]\+\)\|="\([^"]\{-}\)"\|=''\([^'']\{-}\)''\)\?' while len(attrs) > 0 let match = matchstr(attrs, mx) if len(match) == 0 @@ -732,8 +732,12 @@ function! emmet#lang#html#parseTag(tag) abort endif let attr_match = matchlist(match, mx) let name = attr_match[1] - let value = len(attr_match[2]) ? attr_match[2] : attr_match[3] - let current.attr[name] = value + if len(attr_match[2]) + let Val = len(attr_match[3]) ? attr_match[3] : attr_match[4] + else + let Val = function('emmet#types#true') + endif + let current.attr[name] = Val let current.attrs_order += [name] let attrs = attrs[stridx(attrs, match) + len(match):] endwhile diff --git a/unittest.vim b/unittest.vim index b5302f8..2cd1d03 100644 --- a/unittest.vim +++ b/unittest.vim @@ -681,6 +681,10 @@ finish 'query': "u.global\\$$$$3>", 'result': "

", }, + { + 'query': "u.btn\\$$$$ disabled>", + 'result': "", + }, ], }, {