mirror of
https://github.com/mattn/emmet-vim.git
synced 2025-12-07 03:04:27 +08:00
find begining of tokens.
This commit is contained in:
@@ -343,7 +343,8 @@ function! zencoding#expandAbbr(mode) range
|
|||||||
while part =~ '<.\{-}>'
|
while part =~ '<.\{-}>'
|
||||||
let part = substitute(part, '^.*<.\{-}>', '', '')
|
let part = substitute(part, '^.*<.\{-}>', '', '')
|
||||||
endwhile
|
endwhile
|
||||||
let part = substitute(part, '^.*\s', '', '')
|
let rtype = len(globpath(&rtp, 'autoload/zencoding/'.type.'.vim')) ? type : 'html'
|
||||||
|
let part = zencoding#{rtype}#findTokens(part)
|
||||||
elseif zencoding#isExtends(type, "css")
|
elseif zencoding#isExtends(type, "css")
|
||||||
let part = substitute(part, '^.*[;{]\s*', '', '')
|
let part = substitute(part, '^.*[;{]\s*', '', '')
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
function! zencoding#css#findTokens(str)
|
||||||
|
return substitute(a:str, '^.*[;{]\s*', '', '')
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! zencoding#css#parseIntoTree(abbr, type)
|
function! zencoding#css#parseIntoTree(abbr, type)
|
||||||
let abbr = a:abbr
|
let abbr = a:abbr
|
||||||
let type = a:type
|
let type = a:type
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
function! zencoding#haml#findTokens(str)
|
||||||
|
return zencoding#html#findTokens(a:str)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! zencoding#haml#parseIntoTree(abbr, type)
|
function! zencoding#haml#parseIntoTree(abbr, type)
|
||||||
return zencoding#html#parseIntoTree(a:abbr, a:type)
|
return zencoding#html#parseIntoTree(a:abbr, a:type)
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -1,3 +1,23 @@
|
|||||||
|
let s:mx = '\([+>]\|<\+\)\{-}\s*\((*\)\{-}\s*\([@#.]\{-}[a-zA-Z\!][a-zA-Z0-9:_\!\-$]*\|'
|
||||||
|
\ .'{.\{-}}[ \t\r\n}]*\)\(\%(\%(#{[{}a-zA-Z0-9_\-\$]\+\|'
|
||||||
|
\ .'#[a-zA-Z0-9_\-\$]\+\)\|\%(\[[^\]]\+\]\)\|'
|
||||||
|
\ .'\%(\.{[{}a-zA-Z0-9_\-\$]\+\|'
|
||||||
|
\ .'\.[a-zA-Z0-9_\-\$]\+\)\)*\)\%(\({[^}]\+}\+\)\)\{0,1}\%(\s*\*\s*\([0-9]\+\)\s*\)\{0,1}\(\%(\s*)\%(\s*\*\s*[0-9]\+\s*\)\{0,1}\)*\)'
|
||||||
|
|
||||||
|
function! zencoding#html#findTokens(str)
|
||||||
|
let str = a:str
|
||||||
|
while len(str) > 0
|
||||||
|
let token = matchstr(str, s:mx.'\s*$')
|
||||||
|
if token =~ '^\s'
|
||||||
|
let token = substitute(token, '^\s*', '', '')
|
||||||
|
let str = str[0 : -len(token)-1]
|
||||||
|
break
|
||||||
|
endif
|
||||||
|
let str = str[0 : -len(token)-1]
|
||||||
|
endwhile
|
||||||
|
return a:str[len(str) :-1]
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! zencoding#html#parseIntoTree(abbr, type)
|
function! zencoding#html#parseIntoTree(abbr, type)
|
||||||
let abbr = a:abbr
|
let abbr = a:abbr
|
||||||
let type = a:type
|
let type = a:type
|
||||||
@@ -23,11 +43,6 @@ function! zencoding#html#parseIntoTree(abbr, type)
|
|||||||
let rabbr = substitute(abbr, '\%(+\|^\)\([a-zA-Z][a-zA-Z0-9+]\+\)+\([(){}>]\|$\)', '\="(".zencoding#getExpandos(type, submatch(1)).")".submatch(2)', 'i')
|
let rabbr = substitute(abbr, '\%(+\|^\)\([a-zA-Z][a-zA-Z0-9+]\+\)+\([(){}>]\|$\)', '\="(".zencoding#getExpandos(type, submatch(1)).")".submatch(2)', 'i')
|
||||||
endif
|
endif
|
||||||
let abbr = rabbr
|
let abbr = rabbr
|
||||||
let mx = '\([+>]\|<\+\)\{-}\s*\((*\)\{-}\s*\([@#.]\{-}[a-zA-Z\!][a-zA-Z0-9:_\!\-$]*\|'
|
|
||||||
\ .'{.\{-}}[ \t\r\n}]*\)\(\%(\%(#{[{}a-zA-Z0-9_\-\$]\+\|'
|
|
||||||
\ .'#[a-zA-Z0-9_\-\$]\+\)\|\%(\[[^\]]\+\]\)\|'
|
|
||||||
\ .'\%(\.{[{}a-zA-Z0-9_\-\$]\+\|'
|
|
||||||
\ .'\.[a-zA-Z0-9_\-\$]\+\)\)*\)\%(\({[^}]\+}\+\)\)\{0,1}\%(\s*\*\s*\([0-9]\+\)\s*\)\{0,1}\(\%(\s*)\%(\s*\*\s*[0-9]\+\s*\)\{0,1}\)*\)'
|
|
||||||
|
|
||||||
let root = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0 }
|
let root = { 'name': '', 'attr': {}, 'child': [], 'snippet': '', 'multiplier': 1, 'parent': {}, 'value': '', 'pos': 0, 'important': 0 }
|
||||||
let parent = root
|
let parent = root
|
||||||
@@ -35,15 +50,15 @@ function! zencoding#html#parseIntoTree(abbr, type)
|
|||||||
let pos = []
|
let pos = []
|
||||||
while len(abbr)
|
while len(abbr)
|
||||||
" parse line
|
" parse line
|
||||||
let match = matchstr(abbr, mx)
|
let match = matchstr(abbr, s:mx)
|
||||||
let str = substitute(match, mx, '\0', 'ig')
|
let str = substitute(match, s:mx, '\0', 'ig')
|
||||||
let operator = substitute(match, mx, '\1', 'ig')
|
let operator = substitute(match, s:mx, '\1', 'ig')
|
||||||
let block_start = substitute(match, mx, '\2', 'ig')
|
let block_start = substitute(match, s:mx, '\2', 'ig')
|
||||||
let tag_name = substitute(match, mx, '\3', 'ig')
|
let tag_name = substitute(match, s:mx, '\3', 'ig')
|
||||||
let attributes = substitute(match, mx, '\4', 'ig')
|
let attributes = substitute(match, s:mx, '\4', 'ig')
|
||||||
let value = substitute(match, mx, '\5', 'ig')
|
let value = substitute(match, s:mx, '\5', 'ig')
|
||||||
let multiplier = 0 + substitute(match, mx, '\6', 'ig')
|
let multiplier = 0 + substitute(match, s:mx, '\6', 'ig')
|
||||||
let block_end = substitute(match, mx, '\7', 'ig')
|
let block_end = substitute(match, s:mx, '\7', 'ig')
|
||||||
let important = 0
|
let important = 0
|
||||||
if len(str) == 0
|
if len(str) == 0
|
||||||
break
|
break
|
||||||
|
|||||||
@@ -1,3 +1,7 @@
|
|||||||
|
function! zencoding#slim#findTokens(str)
|
||||||
|
return zencoding#html#findTokens(a:str)
|
||||||
|
endfunction
|
||||||
|
|
||||||
function! zencoding#slim#parseIntoTree(abbr, type)
|
function! zencoding#slim#parseIntoTree(abbr, type)
|
||||||
return zencoding#html#parseIntoTree(a:abbr, a:type)
|
return zencoding#html#parseIntoTree(a:abbr, a:type)
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
Reference in New Issue
Block a user