Expand paren when type is css

This commit is contained in:
mattn
2013-09-26 09:57:06 +09:00
parent f8095a65dd
commit bd4c1bfaef
5 changed files with 49 additions and 42 deletions

View File

@@ -1,7 +1,7 @@
"============================================================================= "=============================================================================
" emmet.vim " emmet.vim
" Author: Yasuhiro Matsumoto <mattn.jp@gmail.com> " Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
" Last Change: 09-Sep-2013. " Last Change: 26-Sep-2013.
let s:save_cpo = &cpo let s:save_cpo = &cpo
set cpo&vim set cpo&vim
@@ -546,8 +546,13 @@ function! emmet#expandAbbr(mode, abbr) range
let part = matchstr(line, '\(\S.*\)$') let part = matchstr(line, '\(\S.*\)$')
let ftype = emmet#lang#exists(type) ? type : 'html' let ftype = emmet#lang#exists(type) ? type : 'html'
let part = emmet#lang#{ftype}#findTokens(part) let part = emmet#lang#{ftype}#findTokens(part)
let line = line[0: stridx(line, part) + len(part) - 1]
endif endif
if col('.') == col('$')
let rest = ''
else
let rest = getline('.')[len(line):] let rest = getline('.')[len(line):]
endif
let str = part let str = part
let mx = '|\(\%(html\|haml\|slim\|e\|c\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$' let mx = '|\(\%(html\|haml\|slim\|e\|c\|fc\|xsl\|t\|\/[^ ]\+\)\s*,\{0,1}\s*\)*$'
if str =~ mx if str =~ mx
@@ -618,7 +623,7 @@ function! emmet#expandAbbr(mode, abbr) range
silent! foldopen silent! foldopen
endif endif
silent! exe "normal! v7h\"_s" silent! exe "normal! v7h\"_s"
if col('.') == col('$') - 1 if col('.') == col('$')
call feedkeys('', 'n') call feedkeys('', 'n')
endif endif
let &selection = oldselection let &selection = oldselection

View File

@@ -1,5 +1,5 @@
function! emmet#lang#css#findTokens(str) function! emmet#lang#css#findTokens(str)
return substitute(a:str, '^.*[;{]\s*', '', '') return substitute(substitute(a:str, '^.*[;{]\s*', '', ''), '}\s*$', '', '')
endfunction endfunction
function! emmet#lang#css#parseIntoTree(abbr, type) function! emmet#lang#css#parseIntoTree(abbr, type)
@@ -19,7 +19,7 @@ function! emmet#lang#css#parseIntoTree(abbr, type)
" emmet " emmet
let tokens = split(abbr, '+\ze[^+)!]') let tokens = split(abbr, '+\ze[^+)!]')
let block = emmet#util#searchRegion("{", "}") 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 = emmet#newNode()
let current.snippet = abbr . " {\n\t${cursor}\n}" let current.snippet = abbr . " {\n\t${cursor}\n}"
let current.name = '' let current.name = ''

View File

@@ -1,5 +1,7 @@
function! emmet#lang#sass#findTokens(str) 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 endfunction
function! emmet#lang#sass#parseIntoTree(abbr, type) function! emmet#lang#sass#parseIntoTree(abbr, type)

View File

@@ -109,7 +109,7 @@ endfunction
function! emmet#util#searchRegion(start, end) function! emmet#util#searchRegion(start, end)
let b = searchpairpos(a:start, '', a:end, 'bcnW') let b = searchpairpos(a:start, '', a:end, 'bcnW')
if b == [0, 0] 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 else
return [b, searchpairpos(a:start, '', a:end. '', 'nW')] return [b, searchpairpos(a:start, '', a:end. '', 'nW')]
endif endif

View File

@@ -612,72 +612,72 @@ finish
'result': "float: left;", 'result': "float: left;",
}, },
{ {
'query': "bg+$$$$", 'query': "{bg+$$$$}",
'result': "background: #FFF url($$$$) 0 0 no-repeat;", 'result': "{background: #FFF url($$$$) 0 0 no-repeat;}",
}, },
{ {
'query': "bg+!$$$$", 'query': "{bg+!$$$$}",
'result': "background: #FFF url($$$$) 0 0 no-repeat !important;", 'result': "{background: #FFF url($$$$) 0 0 no-repeat !important;}",
}, },
{ {
'query': "m$$$$", 'query': "{m$$$$}",
'result': "margin: $$$$;", 'result': "{margin: $$$$;}",
}, },
{ {
'query': "m0.1p$$$$", 'query': "{m0.1p$$$$}",
'result': "margin: 0.1%;", 'result': "{margin: 0.1%;}",
}, },
{ {
'query': "m1.0$$$$", 'query': "{m1.0$$$$}",
'result': "margin: 1.0em;", 'result': "{margin: 1.0em;}",
}, },
{ {
'query': "m2$$$$", 'query': "{m2$$$$}",
'result': "margin: 2px;", 'result': "{margin: 2px;}",
}, },
{ {
'query': "bdrs10$$$$", 'query': "{bdrs10$$$$}",
'result': "border-radius: 10px;", 'result': "{border-radius: 10px;}",
}, },
{ {
'query': "-bdrs20$$$$", 'query': "{-bdrs20$$$$}",
'result': "-webkit-border-radius: 20px;\n-moz-border-radius: 20px;\nborder-radius: 20px;", 'result': "{-webkit-border-radius: 20px;\n-moz-border-radius: 20px;\nborder-radius: 20px;}",
}, },
{ {
'query': "lg(top,#fff,#000)$$$$", '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", '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$$$$", 'query': "{m10-5-0$$$$}",
'result': "margin: 10px 5px 0;", 'result': "{margin: 10px 5px 0;}",
}, },
{ {
'query': "m-10--5$$$$", 'query': "{m-10--5$$$$}",
'result': "margin: -10px -5px;", 'result': "{margin: -10px -5px;}",
}, },
{ {
'query': "m10-auto$$$$", 'query': "{m10-auto$$$$}",
'result': "margin: 10px auto;", 'result': "{margin: 10px auto;}",
}, },
{ {
'query': "w100p$$$$", 'query': "{w100p$$$$}",
'result': "width: 100%;", 'result': "{width: 100%;}",
}, },
{ {
'query': "h50e$$$$", 'query': "{h50e$$$$}",
'result': "height: 50em;", 'result': "{height: 50em;}",
}, },
{ {
'query': "(bg+)+c$$$$", 'query': "{(bg+)+c$$$$}",
'result': "background: #FFF url($$$$) 0 0 no-repeat;\ncolor: #000;", 'result': "{background: #FFF url($$$$) 0 0 no-repeat;\ncolor: #000;}",
}, },
{ {
'query': "m0+bgi+bg++p0$$$$", 'query': "{m0+bgi+bg++p0$$$$}",
'result': "margin: 0;\nbackground-image: url($$$$);\nbackground: #FFF url() 0 0 no-repeat;\npadding: 0;", 'result': "{margin: 0;\nbackground-image: url($$$$);\nbackground: #FFF url() 0 0 no-repeat;\npadding: 0;}",
}, },
{ {
'query': "borle$$$$", 'query': "{borle$$$$}",
'result': "border-left: $$$$;", 'result': "{border-left: $$$$;}",
}, },
], ],
}, },
@@ -852,7 +852,7 @@ finish
'name': 'expand abbreviation', 'name': 'expand abbreviation',
'tests': [ 'tests': [
{ {
'query': "@i", 'query': "@i$$$$",
'result': "@import url()", 'result': "@import url()",
}, },
{ {