diff --git a/autoload/emmet.vim b/autoload/emmet.vim index 0341742..2b4db2f 100644 --- a/autoload/emmet.vim +++ b/autoload/emmet.vim @@ -1,7 +1,7 @@ "============================================================================= " emmet.vim " Author: Yasuhiro Matsumoto -" Last Change: 09-Sep-2013. +" Last Change: 26-Sep-2013. let s:save_cpo = &cpo set cpo&vim @@ -546,8 +546,13 @@ function! emmet#expandAbbr(mode, abbr) range let part = matchstr(line, '\(\S.*\)$') let ftype = emmet#lang#exists(type) ? type : 'html' let part = emmet#lang#{ftype}#findTokens(part) + let line = line[0: stridx(line, part) + len(part) - 1] + endif + if col('.') == col('$') + let rest = '' + else + let rest = getline('.')[len(line):] endif - let rest = getline('.')[len(line):] let str = part let mx = '|\(\%(html\|haml\|slim\|e\|c\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$' if str =~ mx @@ -618,7 +623,7 @@ function! emmet#expandAbbr(mode, abbr) range silent! foldopen endif silent! exe "normal! v7h\"_s" - if col('.') == col('$') - 1 + if col('.') == col('$') call feedkeys('', 'n') endif let &selection = oldselection diff --git a/autoload/emmet/lang/css.vim b/autoload/emmet/lang/css.vim index 09442e9..fa3a763 100644 --- a/autoload/emmet/lang/css.vim +++ b/autoload/emmet/lang/css.vim @@ -1,5 +1,5 @@ function! emmet#lang#css#findTokens(str) - return substitute(a:str, '^.*[;{]\s*', '', '') + return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '') endfunction function! emmet#lang#css#parseIntoTree(abbr, type) @@ -19,7 +19,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type) " emmet let tokens = split(abbr, '+\ze[^+)!]') let block = emmet#util#searchRegion("{", "}") - if block[0] == [0,0] && block[1] == [0,0] + if type == 'css' && block[0] == [0,0] && block[1] == [0,0] let current = emmet#newNode() let current.snippet = abbr . " {\n\t${cursor}\n}" let current.name = '' diff --git a/autoload/emmet/lang/sass.vim b/autoload/emmet/lang/sass.vim index ba408a1..d2a5e29 100644 --- a/autoload/emmet/lang/sass.vim +++ b/autoload/emmet/lang/sass.vim @@ -1,5 +1,7 @@ function! emmet#lang#sass#findTokens(str) - return emmet#lang#html#findTokens(a:str) + "let g:hoge = substitute(a:str, '^.*[;{@]\s*', '', '') + "return substitute(a:str, '^.*[;{@]\s*', '', '') + return a:str endfunction function! emmet#lang#sass#parseIntoTree(abbr, type) diff --git a/autoload/emmet/util.vim b/autoload/emmet/util.vim index c5c015d..7d272bd 100644 --- a/autoload/emmet/util.vim +++ b/autoload/emmet/util.vim @@ -109,7 +109,7 @@ endfunction function! emmet#util#searchRegion(start, end) let b = searchpairpos(a:start, '', a:end, 'bcnW') if b == [0, 0] - return [searchpairpos(a:start, '', a:end, 'bnW'), searchpairpos(a:start, '\%#', a:end, 'ncW')] + return [searchpairpos(a:start, '', a:end, 'bnW'), searchpairpos(a:start, '\%#', a:end, 'nW')] else return [b, searchpairpos(a:start, '', a:end. '', 'nW')] endif diff --git a/unittest.vim b/unittest.vim index aecda6a..b3ace15 100644 --- a/unittest.vim +++ b/unittest.vim @@ -612,72 +612,72 @@ finish 'result': "float: left;", }, { - 'query': "bg+$$$$", - 'result': "background: #FFF url($$$$) 0 0 no-repeat;", + 'query': "{bg+$$$$}", + 'result': "{background: #FFF url($$$$) 0 0 no-repeat;}", }, { - 'query': "bg+!$$$$", - 'result': "background: #FFF url($$$$) 0 0 no-repeat !important;", + 'query': "{bg+!$$$$}", + 'result': "{background: #FFF url($$$$) 0 0 no-repeat !important;}", }, { - 'query': "m$$$$", - 'result': "margin: $$$$;", + 'query': "{m$$$$}", + 'result': "{margin: $$$$;}", }, { - 'query': "m0.1p$$$$", - 'result': "margin: 0.1%;", + 'query': "{m0.1p$$$$}", + 'result': "{margin: 0.1%;}", }, { - 'query': "m1.0$$$$", - 'result': "margin: 1.0em;", + 'query': "{m1.0$$$$}", + 'result': "{margin: 1.0em;}", }, { - 'query': "m2$$$$", - 'result': "margin: 2px;", + 'query': "{m2$$$$}", + 'result': "{margin: 2px;}", }, { - 'query': "bdrs10$$$$", - 'result': "border-radius: 10px;", + 'query': "{bdrs10$$$$}", + 'result': "{border-radius: 10px;}", }, { - 'query': "-bdrs20$$$$", - 'result': "-webkit-border-radius: 20px;\n-moz-border-radius: 20px;\nborder-radius: 20px;", + 'query': "{-bdrs20$$$$}", + 'result': "{-webkit-border-radius: 20px;\n-moz-border-radius: 20px;\nborder-radius: 20px;}", }, { - 'query': "lg(top,#fff,#000)$$$$", - 'result': "background-image: -webkit-gradient(top, 0 0, 0 100, from(#fff), to(#000));\nbackground-image: -webkit-linear-gradient(#fff, #000);\nbackground-image: -moz-linear-gradient(#fff, #000);\nbackground-image: -o-linear-gradient(#fff, #000);\nbackground-image: linear-gradient(#fff, #000);\n", + 'query': "{lg(top,#fff,#000)$$$$}", + 'result': "{background-image: -webkit-gradient(top, 0 0, 0 100, from(#fff), to(#000));\nbackground-image: -webkit-linear-gradient(#fff, #000);\nbackground-image: -moz-linear-gradient(#fff, #000);\nbackground-image: -o-linear-gradient(#fff, #000);\nbackground-image: linear-gradient(#fff, #000);\n}", }, { - 'query': "m10-5-0$$$$", - 'result': "margin: 10px 5px 0;", + 'query': "{m10-5-0$$$$}", + 'result': "{margin: 10px 5px 0;}", }, { - 'query': "m-10--5$$$$", - 'result': "margin: -10px -5px;", + 'query': "{m-10--5$$$$}", + 'result': "{margin: -10px -5px;}", }, { - 'query': "m10-auto$$$$", - 'result': "margin: 10px auto;", + 'query': "{m10-auto$$$$}", + 'result': "{margin: 10px auto;}", }, { - 'query': "w100p$$$$", - 'result': "width: 100%;", + 'query': "{w100p$$$$}", + 'result': "{width: 100%;}", }, { - 'query': "h50e$$$$", - 'result': "height: 50em;", + 'query': "{h50e$$$$}", + 'result': "{height: 50em;}", }, { - 'query': "(bg+)+c$$$$", - 'result': "background: #FFF url($$$$) 0 0 no-repeat;\ncolor: #000;", + 'query': "{(bg+)+c$$$$}", + 'result': "{background: #FFF url($$$$) 0 0 no-repeat;\ncolor: #000;}", }, { - 'query': "m0+bgi+bg++p0$$$$", - 'result': "margin: 0;\nbackground-image: url($$$$);\nbackground: #FFF url() 0 0 no-repeat;\npadding: 0;", + 'query': "{m0+bgi+bg++p0$$$$}", + 'result': "{margin: 0;\nbackground-image: url($$$$);\nbackground: #FFF url() 0 0 no-repeat;\npadding: 0;}", }, { - 'query': "borle$$$$", - 'result': "border-left: $$$$;", + 'query': "{borle$$$$}", + 'result': "{border-left: $$$$;}", }, ], }, @@ -852,7 +852,7 @@ finish 'name': 'expand abbreviation', 'tests': [ { - 'query': "@i", + 'query': "@i$$$$", 'result': "@import url()", }, {