From 3fb134b503eeb3fc6cf91a7fd9716a7fb7dbeed6 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Thu, 19 Jul 2018 01:02:57 +0900 Subject: [PATCH 1/2] 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$$$$", From 2ac3648bc86e0d4ddc839f67ba32ff0e536b4660 Mon Sep 17 00:00:00 2001 From: Yasuhiro Matsumoto Date: Mon, 6 Aug 2018 22:31:34 +0900 Subject: [PATCH 2/2] fix custom expanding closes #429 --- autoload/emmet/lang/html.vim | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/autoload/emmet/lang/html.vim b/autoload/emmet/lang/html.vim index b1a362e..f2de7d5 100644 --- a/autoload/emmet/lang/html.vim +++ b/autoload/emmet/lang/html.vim @@ -143,7 +143,7 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort if empty(tag_name) let pname = len(parent.child) > 0 ? parent.child[0].name : '' - if !empty(pname) && has_key(pmap, pname) + if !empty(pname) && has_key(pmap, pname) && custom == '' let tag_name = pmap[pname] elseif !empty(pname) && index(inlineLevel, pname) > -1 let tag_name = 'span' @@ -206,6 +206,7 @@ function! emmet#lang#html#parseIntoTree(abbr, type) abort let current.snippet = snippet break elseif custom =~# k + let g:hoge = current let snippet = '${' . custom . '}' let current.snippet = '${' . custom . '}' if current.name != ''