diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index caa507e..b1a362e 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -1,6 +1,6 @@ let s:bx = '{\%("[^"]*"\|''[^'']*''\|\$#\|\${\w\+}\|\$\+\|{[^{]\+\|[^{}]\)\{-}}' -let s:mx = '\([+>]\|[<^]\+\)\{-}\s*' -\ .'\((*\)\{-}\s*' +let s:mx = '\([+>]\|[<^]\+\)\{-}' +\ .'\((*\)\{-}' \ .'\([@#.]\{-}[a-zA-Z_\!][a-zA-Z0-9:_\!\-$]*\|' . s:bx . '\|\[[^\]]\+\]\)' \ .'\(' \ .'\%(' @@ -32,14 +32,15 @@ function! emmet#lang#html#findTokens(str) abort endwhile let last_pos = pos while len(str) > 0 + let white = matchstr(str, '^\s\+', pos) + if white != '' + let last_pos = pos + len(white) + let pos = last_pos + endif let token = matchstr(str, s:mx, pos) if token ==# '' break endif - if token =~# '^\s' - let token = matchstr(token, '^\s*\zs.*') - let last_pos = stridx(str, token, pos) - endif let pos = stridx(str, token, pos) + len(token) endwhile let str = a:str[last_pos :-1] diff --git a/unittest.vim b/unittest.vim index 1f40330..85f3772 100644 --- a/unittest.vim +++ b/unittest.vim @@ -122,6 +122,7 @@ function! s:test(...) if stridx(query, '$$$$') != -1 silent! 1new silent! exe 'setlocal ft='.testgroup.type + EmmetInstall silent! let key = matchstr(query, '.*\$\$\$\$\zs.*\ze\$\$\$\$') if len(key) > 0 exe printf('let key = "%s"', key) @@ -193,6 +194,9 @@ function! s:do_tests(bang, ...) if exists('s:old_user_emmet_settings') let g:user_emmet_settings = s:old_user_emmet_settings endif + if exists('s:old_user_emmet_install_global') + let g:user_emmet_install_global = s:old_user_emmet_install_global + endif endtry endfunction @@ -353,19 +357,19 @@ finish 'result': "
| \n\t\t | \n\t\t | \n\t\t | \n\t |
\n\t
Footer
\n\n", }, { - 'query': "#header > ul > li ^ p{Footer}", + 'query': "#header>ul>li^p{Footer}", 'result': "Footer
\n