From 3fb134b503eeb3fc6cf91a7fd9716a7fb7dbeed6 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 19 Jul 2018 01:02:57 +0900 Subject: [PATCH] fix finding begining of token closes #428 --- autoload/emmet/lang/html.vim | 13 +++++++------ unittest.vim | 14 +++++++++----- 2 files changed, 16 insertions(+), 11 deletions(-) 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\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n
\n", }, { - 'query': "div#header + div#footer", + 'query': "div#header+div#footer", 'result': "
\n
\n", }, { - 'query': "#header + div#footer", + 'query': "#header+div#footer", 'result': "
\n
\n", }, { - 'query': "#header > ul > li < p{Footer}", + 'query': "#header>ul>li\n\t\n\t

Footer

\n\n", }, { - 'query': "#header > ul > li ^ p{Footer}", + 'query': "#header>ul>li^p{Footer}", 'result': "
\n\t
    \n\t\t
  • \n\t
\n\t

Footer

\n
\n", }, { @@ -841,7 +845,7 @@ finish ], }, { - 'name': 'expand abbreviation', + 'name': 'split join', 'tests': [ { 'query': "%a foo\n bar$$$$\\j$$$$",